如何配置Cloud Build触发器使其根据git commit message跳过Docker镜像构建
Cloud Build跳过Docker构建的实现方案
你可以通过Cloud Build的条件执行能力结合Commit Message拉取逻辑实现该需求,具体步骤如下:
1. 前置准备:拉取Commit Message到流水线
Cloud Build默认不会把Git提交信息内置为环境变量,你需要先新增一个步骤拉取当前提交的Message存到工作区:
steps: # 拉取最新提交的Commit Message并存入临时文件 - name: 'gcr.io/cloud-builders/git' entrypoint: 'bash' args: - '-c' - 'git log -1 --pretty=%B > /workspace/current_commit_msg.txt'
可选简化配置:你可以直接在Cloud Build触发器的「替换变量」栏新增自定义变量
_COMMIT_MSG,值设置为$(body.commit.message),配置后无需新增上面的git拉取步骤,可直接在后续步骤中引用该变量。
2. 给Docker构建步骤添加执行条件
在你原有执行Docker镜像构建的步骤中,新增if判断规则,仅当Commit Message不包含skip-docker-creation标识时才执行该步骤:
# Docker构建步骤,增加跳过判断 - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/你的项目ID/镜像名:版本号', '.'] # 用git拉取文件的判断写法 if: '!contains(readFile("/workspace/current_commit_msg.txt"), "skip-docker-creation")' # 如果用触发器自定义变量的判断写法,替换上面的if为下面这行即可 # if: '!contains($_COMMIT_MSG, "skip-docker-creation")'
注意事项
- 如果你需要大小写不敏感的匹配,可以用
lower()函数包裹内容,示例:!contains(lower(readFile("/workspace/current_commit_msg.txt")), "skip-docker-creation") - 如果你的流水线还有Docker镜像推送、安全扫描等依赖构建结果的后续步骤,需要给这些步骤也加上相同的
if条件,避免找不到镜像触发流水线报错。
内容的提问来源于stack exchange,提问作者Yash Saini
相关产品推荐
相关产品推荐

