You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

关键说明

  1. 前置准备

    • 给Cloud Build服务账号添加Cloud SQL Client角色,确保它能访问你的Cloud SQL实例
    • 启用项目的Cloud SQL Admin API
    • 若要避免硬编码密码,推荐把DATABASE_URL存到Secret Manager,然后在env里用$(gcloud secrets versions access latest --secret=你的密钥名称)获取
  2. 步骤逻辑

    • PrismaMigrate步骤:用Node镜像进入项目目录,安装依赖后执行prisma migrate deploy(生产环境专用命令,执行所有未应用的迁移)
    • CloudSQLProxy步骤:并行启动Cloud SQL代理,通过共享的cloudsql卷让迁移步骤能以localhost方式访问Cloud SQL实例
    • Push步骤等待迁移完成再执行,确保只有迁移成功后才推送新版本镜像,避免部署和schema不匹配的代码
  3. 适配调整

    • 如果你用pnpm/yarn,把npm install换成pnpm install或yarn install
    • 若你的Prisma schema不在api目录下,调整cd api为对应路径

内容的提问来源于stack exchange,提问作者adam2k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:10:20