【问题标题】:Gcloud, Cloud build: Update all cloud run services with new image at onceGcloud、Cloud build:一次用新镜像更新所有云运行服务
【发布时间】:2023-02-09 23:05:36
【问题描述】:

当在 master 分支上推送新提交时,我有一个 Cloud Build 触发器将图像推送到容器注册表。

发生这种情况时,我想用新创建的图像更新我所有的云运行作业。

  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
    entrypoint: gcloud
    args:
      - beta
      - run
      - jobs
      - update
      - $_JOB_ID_1
      - '--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'
    id: Deploy

问题是我有 N 个工作 ID(job-id1;job-id2 .... job-idN)。有没有一种方法可以遍历我将作为替换变量提供的数组以一次更新所有作业?

【问题讨论】:

  • 并非开箱即用,但 Cloud Workflows 可以在该任务上为您提供很多帮助

标签: google-cloud-platform yaml google-cloud-run google-cloud-build


【解决方案1】:

我可以这样做:

  - name: gcr.io/google.com/cloudsdktool/cloud-sdk
    env:
      - HOST=$_GCR_HOSTNAME
      - PROJECT=$PROJECT_ID
      - REPO=$REPO_NAME
      - SERVICE=$_SERVICE_NAME
      - COMMIT=$COMMIT_SHA
    id: Deploy Jobs
    script: |
      #!/usr/bin/env bash
      jobs=$(gcloud beta run jobs list --format="value(name)")
      for job in $jobs; do
        if [[ $job == *"prod"* ]]; then
          gcloud beta run jobs update $job --image=$HOST/$PROJECT/$REPO/$SERVICE:$COMMIT --region=europe-southwest1
        fi
      done

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 2011-12-28
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2020-10-04
    相关资源
    最近更新 更多