如何在Cloud Build构建失败时向Google Pub/Sub主题发送消息?
实现Cloud Build构建失败时自动发送Pub/Sub消息的简便方案
直接用Cloud Build的post步骤就能实现类似finally的效果,不用在每个构建步骤后重复检查状态。post步骤会在所有主构建步骤执行完成后自动运行,不管主流程是成功还是失败,你只需要在这个步骤里判断构建状态,失败时发送Pub/Sub消息即可。
具体配置示例(cloudbuild.yaml)
steps: # 这里放你的正常构建步骤,比如镜像构建、测试等 - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/你的项目ID/你的镜像名', '.'] # 更多构建步骤... # post步骤:主流程结束后必执行 post: - name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | if [ "$BUILD_STATUS" = "FAILURE" ]; then gcloud pubsub topics publish projects/你的项目ID/topics/你的失败通知主题 --message="构建ID $BUILD_ID 失败,时间: $(date)" fi
关键说明
post是Cloud Build原生支持的步骤类型,无需额外配置,主步骤全部执行完后自动触发。$BUILD_STATUS是Cloud Build自动注入的环境变量,值为SUCCESS或FAILURE,用来判断构建结果。$BUILD_ID也是内置环境变量,代表当前构建的唯一ID,方便在消息里定位具体失败的构建任务。
权限配置
要让Cloud Build能发布Pub/Sub消息,需要给Cloud Build的服务账号添加Pub/Sub发布者权限:
gcloud projects add-iam-policy-binding 你的项目ID \ --member="serviceAccount:你的项目编号@cloudbuild.gserviceaccount.com" \ --role="roles/pubsub.publisher"
(注:项目编号可以通过gcloud projects describe 你的项目ID --format='value(projectNumber)'命令获取)
内容的提问来源于stack exchange,提问作者Brian K
相关产品推荐
相关产品推荐

