优雅地中断中间 Google 云构建步骤

Gracefully break in a middle Google Cloud Build step

是否有可能以某种方式优雅地 exit/break 在 GCB 的某个中间步骤?

如果某些步骤命令以非成功代码退出,构建流程将中断,但也将被视为失败。我想打破但保持成功状态。

这是目前不可能的事情(尽管它是将来 added 的一个选项),但您可以使用解决方法来忽略任何步骤的失败。使用 bash 您可以通过使用类似以下内容来实现:

- name: 'gcr.io/cloud-builders/docker'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    docker pull gcr.io/$PROJECT_ID/my-image || exit 0

Here 您可以找到 link 到 Github 问题,其中解决了相同的问题,您将能够找到更多信息。

我找到了一个我认为更好的解决方案:让构建使用 gcloud sdk 自行取消。

  - name: 'gcr.io/cloud-builders/gcloud'
    id: 'Cancel current build if on master'
    entrypoint: 'sh'
    args:
      - '-c'
      - |
        test $BRANCH_NAME = "master" && gcloud builds cancel $BUILD_ID > /dev/null || true

请注意,运行构建的服务帐户 (xxx@cloudbuild.gserviceaccount.com) 应具有取消构建的适当权限。