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

如何在Google Cloudbuild流水线中配置dev分支部署成功后自动合并到prod分支

Google Cloud Build流水线自动合并dev到prod分支的实现方案

前置依赖配置

在新增合并步骤前,你需要先完成权限配置:

  • 在GitHub账号下生成具有仓库repo权限的Personal Access Token(PAT)
  • 将PAT上传至Google Secret Manager,创建密钥命名为GITHUB_PAT
  • 在Cloud Build IAM配置中,为Cloud Build默认服务账号[项目号]@cloudbuild.gserviceaccount.com授予Secret Manager 秘密访问者角色,确保流水线可以读取密钥内容

方案1:无分支保护场景直接合并(改动最小)

如果你的prod分支没有设置分支保护规则,直接在现有cloudbuild.yaml的dev环境部署步骤之后新增如下步骤即可:

注意需将步骤的waitFor参数值替换为你自己的dev环境部署步骤的id,确保只有部署成功后才会执行合并操作

steps:
  # 你原有测试、部署dev环境的步骤保持不变,假设dev部署步骤的id为deploy-dev
  - name: 'gcr.io/cloud-builders/git'
    id: 'merge-dev-to-prod'
    waitFor: ['deploy-dev']
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        # 配置Git身份信息
        git config --global user.name "Cloud Build Bot"
        git config --global user.email "cloudbuild@your-org.com"
        # 读取GitHub PAT
        GITHUB_PAT=$(gcloud secrets versions access latest --secret=GITHUB_PAT)
        REPO_URL="https://${GITHUB_PAT}@github.com/你的GitHub用户名/你的仓库名.git"
        # 拉取全部分支信息
        git fetch --all
        # 切换到prod分支并合并dev代码
        git checkout prod
        git merge origin/dev --ff-only
        # 推送合并后的代码到远程
        git push ${REPO_URL} prod
  • 如果你需要保留合并提交记录,可将--ff-only参数替换为--no-ff -m "Auto merge dev to prod after dev deployment success"
  • 如果合并出现冲突,步骤会自动失败,你会收到Cloud Build的失败通知,需手动解决冲突后再合并

方案2:适配有分支保护规则的场景

如果你的prod分支设置了必须走PR、需要审核/CI检查通过才能合并的规则,可以调整为自动创建PR再触发合并的逻辑:

steps:
  # 你原有测试、部署dev环境的步骤保持不变,假设dev部署步骤的id为deploy-dev
  - name: 'gcr.io/cloud-builders/curl'
    id: 'auto-merge-pr'
    waitFor: ['deploy-dev']
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        GITHUB_PAT=$(gcloud secrets versions access latest --secret=GITHUB_PAT)
        # 调用GitHub API创建dev到prod的PR
        PR_RESPONSE=$(curl -s -X POST \
          -H "Authorization: token ${GITHUB_PAT}" \
          -H "Accept: application/vnd.github.v3+json" \
          https://api.github.com/repos/你的GitHub用户名/你的仓库名/pulls \
          -d '{"title":"Auto merge dev to prod","head":"dev","base":"prod"}')
        PR_NUMBER=$(echo ${PR_RESPONSE} | jq -r '.number')
        # 等待PR前置检查完成(可根据你的CI检查时长调整等待时间)
        sleep 60
        # 调用API合并PR,merge_method可选merge/squash/rebase
        curl -s -X PUT \
          -H "Authorization: token ${GITHUB_PAT}" \
          -H "Accept: application/vnd.github.v3+json" \
          https://api.github.com/repos/你的GitHub用户名/你的仓库名/pulls/${PR_NUMBER}/merge \
          -d '{"merge_method":"squash"}'
  • 你需要为GitHub PAT额外授予PR读写和合并权限
  • 如果PR不符合分支保护规则(如存在冲突、审核未通过),合并请求会自动失败并触发Cloud Build报错通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:08