仅当我的repo被某些特定的发行标签标记时,我才想运行我的构建管道。我可以从CODEBUILD_WEBHOOK_TRIGGER环境变量中获取标签值,并且可以在BUILD阶段有条件地执行一些bash功夫代码:
build:
commands:
- echo ${CODEBUILD_WEBHOOK_TRIGGER##*/}
- |
if expr "${CODEBUILD_WEBHOOK_TRIGGER}" : '^tag/30' >/dev/null; then
git add *
git commit -am "System commit"
git push
git tag ${CODEBUILD_WEBHOOK_TRIGGER##*/}
git push origin ${CODEBUILD_WEBHOOK_TRIGGER##*/}
echo Pushed the repo
fi
很好,我只在标签看起来有某种方式时才按下。
抛开上面的脆弱性,如果我的CODEBUILD_WEBHOOK_TRIGGER变量没有特定的前缀,那么我真正想做的是在INSTALL阶段终止整个构建过程。我想跳过所有后续步骤,并退出管道而不会出现错误。
有没有办法做到这一点?尽量减少我正在使用的资源会很好。
答案 0 :(得分:1)
CodeBuild现在原生支持标签过滤。文档@ https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html#sample-github-pull-request-filter-webhook-events。
答案 1 :(得分:1)
使用提供的CodeBuild环境变量$ {CODEBUILD_BUILD_ID}使用aws-cli命令停止构建对我来说很有效:
- aws codebuild stop-build --id ${CODEBUILD_BUILD_ID}
例如:
- |
if expr "${CODEBUILD_WEBHOOK_TRIGGER}" : '^tag/30' >/dev/null; then
. . .
else
aws codebuild stop-build --id ${CODEBUILD_BUILD_ID}
fi
答案 2 :(得分:0)
回答我自己的问题,事实证明,您可以通过在源代码设置中指定一个分支过滤器来做到这一点。正则表达式似乎与从Webhook返回的任何内容匹配:
^tag/30
这适用于我的标记模式。
问题一直存在。我仍然可以想象出一些用例,由于某些其他原因您希望使构建管道的执行短路。