Prisma Migrate を使用したデータベース変更のデプロイ
ステージング、テスト、または本番環境に保留中のマイグレーションを適用するには、CI/CDパイプラインの一部として `migrate deploy` コマンドを実行します。
npx prisma migrate deploy
`prisma migrate deploy` をいつ実行するかは、プラットフォームによって異なります。たとえば、簡略化された Heroku ワークフローには以下が含まれます
- `./prisma/migration` フォルダーがソース管理下にあることを確認する
- `prisma migrate deploy` を リリースフェーズ 中に実行する
理想的には、`migrate deploy` は自動化されたCI/CDパイプラインの一部であるべきであり、本番データベースへの変更をデプロイするためにこのコマンドをローカルで実行すること(たとえば、`DATABASE_URL` 環境変数を一時的に変更するなど)は一般的に推奨されません。本番データベースのURLをローカルに保存することは、一般的に良いプラクティスとはみなされません。
`prisma migrate deploy` コマンドを実行するには、通常 `devDependencies` に追加される `prisma` 依存関係へのアクセスが必要です。Vercelなどの一部のプラットフォームでは、ビルド中に開発依存関係を削除するため、コマンドを呼び出すことができなくなります。これは、`prisma` を本番環境の依存関係にし、`package.json` の `dependencies` に移動することで回避できます。`migrate deploy` コマンドの詳細については、以下を参照してください。
GitHub Actions を使用したデータベース変更のデプロイ
CI/CDの一部として、パイプラインの一部として `prisma migrate deploy` を実行して、保留中のマイグレーションを本番データベースに適用できます。
以下は、データベースに対してマイグレーションを実行するアクションの例です
name: Deploy
on:
push:
paths:
- prisma/migrations/**
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
- name: Install dependencies
run: npm install
- name: Apply all pending migrations to the database
run: npx prisma migrate deploy
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
ハイライトされた行は、このアクションが `prisma/migrations` ディレクトリに変更があった場合にのみ実行されることを示しています。そのため、`npx prisma migrate deploy` はマイグレーションが更新されたときにのみ実行されます。
`DATABASE_URL` 変数を、接続文字列を引用符で囲まずに、リポジトリのシークレットとして設定 していることを確認してください。