如何在Google Cloud Build流水线中添加Cloud SQL的Prisma迁移
给Cloud Build流水线添加Prisma迁移Cloud SQL的步骤
你需要在现有流水线的Build和Push之间添加Prisma迁移步骤,同时通过Cloud SQL代理让构建环境能访问你的PostgreSQL实例。以下是修改后的完整配置,附带关键说明:
修改后的cloudbuild.yaml
steps: - name: gcr.io/cloud-builders/docker args: - build - '--no-cache' - '-t' - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA' - . - '-f' - api/Dockerfile id: Build # 新增:Prisma迁移步骤 - name: node:18 entrypoint: bash args: - '-c' - | cd api npm install npx prisma migrate deploy env: - 'DATABASE_URL=${_DATABASE_URL}' id: PrismaMigrate volumes: - name: cloudsql path: /cloudsql # 新增:启动Cloud SQL代理,让构建环境访问Cloud SQL实例 - name: gcr.io/cloud-builders/gcloud args: - sql - connect - $_CLOUD_SQL_CONNECTION_NAME - '--user=postgres' - '--quiet' id: CloudSQLProxy volumes: - name: cloudsql path: /cloudsql waitFor: ['-'] # 与PrismaMigrate并行启动,节省时间 - name: gcr.io/cloud-builders/docker args: - push - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA' id: Push waitFor: ['PrismaMigrate'] # 确保迁移完成后再推送镜像 - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim' args: - run - services - update - $_SERVICE_NAME - '--platform=managed' - '--image=$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA' - >- --labels=managed-by=gcp-cloud-build-deploy-cloud-run,commit-sha=$COMMIT_SHA,gcb-build-id=$BUILD_ID,gcb-trigger-id=$_TRIGGER_ID,$_LABELS - '--region=$_DEPLOY_REGION' - '--quiet' id: Deploy entrypoint: gcloud images: - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA' options: substitutionOption: ALLOW_LOOSE volumes: - name: cloudsql emptyDir: {} substitutions: # 替换为你的实际配置,也可以在Cloud Build触发器页面设置这些变量 _DATABASE_URL: "postgresql://postgres:你的数据库密码@localhost:5432/你的数据库名" _CLOUD_SQL_CONNECTION_NAME: "你的GCP项目ID:实例区域:实例名称" tags: - gcp-cloud-build-deploy-cloud-run - gcp-cloud-build-deploy-cloud-run-managed - api
关键说明
前置准备
- 给Cloud Build服务账号添加
Cloud SQL Client角色,确保它能访问你的Cloud SQL实例 - 启用项目的
Cloud SQL Admin API - 若要避免硬编码密码,推荐把
DATABASE_URL存到Secret Manager,然后在env里用$(gcloud secrets versions access latest --secret=你的密钥名称)获取
- 给Cloud Build服务账号添加
步骤逻辑
PrismaMigrate步骤:用Node镜像进入项目目录,安装依赖后执行prisma migrate deploy(生产环境专用命令,执行所有未应用的迁移)CloudSQLProxy步骤:并行启动Cloud SQL代理,通过共享的cloudsql卷让迁移步骤能以localhost方式访问Cloud SQL实例Push步骤等待迁移完成再执行,确保只有迁移成功后才推送新版本镜像,避免部署和schema不匹配的代码
适配调整
- 如果你用pnpm/yarn,把
npm install换成pnpm install或yarn install - 若你的Prisma schema不在api目录下,调整
cd api为对应路径
- 如果你用pnpm/yarn,把
内容的提问来源于stack exchange,提问作者adam2k
相关产品推荐
相关产品推荐

