优雅地中断中间 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
) 应具有取消构建的适当权限。
是否有可能以某种方式优雅地 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
) 应具有取消构建的适当权限。