GitLab CI:避免每个作业重复的skip-ci

问题描述 投票:0回答:3

目前,我正在每一项工作中复制有关

skip-ci
的信息,就像这样

job1:
  except:
    variables:
      - $CI_COMMIT_MESSAGE =~ /skip-ci/
    ...
job2:
  except:
    variables:
      - $CI_COMMIT_MESSAGE =~ /skip-ci/
    ...
job3:
  except:
    variables:
      - $CI_COMMIT_MESSAGE =~ /skip-ci/
    ...

有没有办法只写一次就可以适用于所有工作?

continuous-integration gitlab yaml gitlab-ci gitlab-pipelines
3个回答
9
投票

如果您不完全依赖

skip-ci
,Gitlab 已经包含了这方面的逻辑: 当提交消息包含
[skip ci]
[ci skip]
时,根据 文档,管道将被跳过。


5
投票

在 GitLab 中有两种方法可以做到这一点:

工作继承

这是推荐的方法,因为它比 YAML 锚点更具可读性,并且如果需要,您可以从多个作业进行扩展。在以下示例中,作业名称前面的句点导致 GitLab 隐藏该作业,因此模板作业不会自行执行。

.skip-ci:
  except:
    variables:
      - $CI_COMMIT_MESSAGE =~ /skip-ci/

job1:
  extends: .skip-ci
    ...
job2:
  extends: .skip-ci
    ...
job3:
  extends: .skip-ci
    ...

YAML 锚点

为了完整性,我已经包含了这种方法,但通常使用

extends
几乎总是更好。

.skip-ci: &skip-ci
  except:
    variables:
      - $CI_COMMIT_MESSAGE =~ /skip-ci/

job1:
  <<: *skip-ci
    ...
job2:
  <<: *skip-ci
    ...
job3:
  <<: *skip-ci
    ...

0
投票

当您允许所有可能性时,将实现完整的功能

来自gitlab源代码

SKIP_PATTERN = /\[(ci[ _-]skip|skip[ _-]ci)\]/i

https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/pipeline/chain/skip.rb#L10

© www.soinside.com 2019 - 2024. All rights reserved.