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

如何通过Cloud Build批量更新所有Cloud Run Jobs的镜像?

实现批量更新Cloud Run Jobs的方案

完全可以实现批量更新,但Cloud Build原生不支持直接传入数组变量遍历,我们可以用逗号分隔的变量+shell循环脚本来搞定,具体步骤如下:

1. 配置触发器的替换变量

在你的Cloud Build触发器的「替换变量」中添加一个名为$_JOB_IDS的变量,值填所有需要更新的作业ID,用逗号分隔,例如:

job-id1,job-id2,job-id3,...,job-idN

2. 修改Cloud Build配置脚本

把原来的单作业更新步骤,替换成循环遍历所有作业ID的脚本步骤,完整配置片段如下:

- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
  entrypoint: bash
  args:
    - '-c'
    - |
      # 将逗号分隔的作业ID字符串转为数组
      IFS=',' read -ra JOB_ID_LIST <<< "$_JOB_IDS"
      # 遍历每个作业ID执行更新命令
      for JOB_ID in "${JOB_ID_LIST[@]}"; do
        echo "开始更新Cloud Run Job: $JOB_ID"
        gcloud beta run jobs update "$JOB_ID" \
          --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" \
          --region="$_DEPLOY_REGION" \
          --quiet
        echo "完成更新Cloud Run Job: $JOB_ID"
      done
  id: Deploy All Cloud Run Jobs

3. 可选优化提示

  • 如果你的作业分布在不同区域,可以再添加一个逗号分隔的区域变量$_DEPLOY_REGIONS,对应每个作业的区域,或者调整脚本逻辑适配多区域场景。
  • 若需要在某个作业更新失败时停止整个构建,可在脚本开头添加set -e;若想忽略失败继续更新其他作业,可在gcloud命令后追加|| echo "更新$JOB_ID失败,继续处理下一个"。
  • 确保Cloud Build服务账号拥有roles/run.admin或足够的权限(如run.jobs.update)来修改Cloud Run Jobs。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:31:16