【问题标题】:Skip gitlab pipeline job if no changes in files and last pipeline for that job is successful如果文件没有更改并且该作业的最后一个管道成功,则跳过 gitlab 管道作业
【发布时间】:2021-08-06 07:52:56
【问题描述】:

我有一个以这种方式配置的 Gitlab 管道:构建 >> 测试 >> 发布

我想要实现的是:

如果出现以下情况则跳过测试:

  1. 同一分支的测试作业已在同一分支的最后一个管道中成功运行 AND;
  2. 某些文件没有变化

如果出现以下情况,也总是运行测试:

  1. 同一分支的测试作业在同一分支运行的最后一个管道中失败或;
  2. 这是它第一次在同一个分支上运行(没有以前的管道),或者;
  3. 某些文件有变化(同上文件)

这可能吗?如果是,怎么做?

【问题讨论】:

    标签: gitlab continuous-integration gitlab-ci continuous-delivery


    【解决方案1】:

    如果您不介意其他工具,我们通过 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

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多