[英]Skip gitlab pipeline job if no changes in files and last pipeline for that job is successful
我有一个 Gitlab 管道以这种方式配置:构建 >> 测试 >> 发布
我想要实现的是:
如果出现以下情况则跳过测试:
如果出现以下情况,也总是运行测试:
这可能吗? 如果是,如何?
如果您不介意其他工具,我们通过 Reliza Hub 为任何 CI/CD 提供此功能(免责声明:我正在开发该工具)。
本质上,您将添加一些 yaml,如下所示(这是来自正在构建 helm 图表的演示项目之一的工作示例):
- # get latest completed release to see if there are diffs in helm chart
- do_helm_release="true"
- last_commit=$(docker run --rm relizaio/reliza-cli getlatestrelease -i $RELIZA_API_ID -k $RELIZA_API_KEY --branch $CI_COMMIT_REF_NAME| jq -r ".sourceCodeEntryDetails.commit")
- if [ ! -z "$last_commit" ]; then changes=$(git log $last_commit..$CI_COMMIT_SHA helm/ | wc -l); if [ $changes -eq 0 ]; then do_helm_release="false"; fi; fi
- echo "do helm release = $do_helm_release"
- if [ "true" == "$do_helm_release" ]; then ...
稍后在您的 yaml 中,您将向 Reliza Hub 提交发布详细信息。 这是一个基本示例 - https://github.com/relizaio/reliza-hub-integrations/blob/master/GitLab/standard-docker-registry/.gitlab-ci.yml
Reliza Hub 会自动丢弃任何失败的版本,因此您只需将 Git 与成功的版本进行比较。
如果您想进行构建但跳过测试,您可以利用批准逻辑,其中自动化流程设置某些批准,然后您仅获得具有某些必需批准的构建以进行比较。 有关更多详细信息,请参见此处 - https://worklifenotes.com/2020/04/09/approvals-for-any-ci-cd-in-reliza-hub-demo-video/
Reliza Hub 的社区支持 - https://discord.gg/UTxjBf9juQ
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.