使用 Prisma Migrate 部署資料庫更改
要在預釋出、測試或生產環境中應用待處理的遷移,請將 migrate deploy 命令作為 CI/CD 管道的一部分執行
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 以將待處理的遷移應用到生產資料庫。
這是一個將在資料庫上執行遷移的示例操作
deploy.yml
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 變數設定為儲存庫中的秘密,連線字串不帶引號。