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

Dan*_*cki 6 continuous-integration yaml gitlab gitlab-ci gitlab-pipelines

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/
    ...
Run Code Online (Sandbox Code Playgroud)

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

Sim*_*eiß 9

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


DV8*_*2XL 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
    ...
Run Code Online (Sandbox Code Playgroud)

YAML 锚点

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

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

job1:
  <<: *skip-ci
    ...
job2:
  <<: *skip-ci
    ...
job3:
  <<: *skip-ci
    ...
Run Code Online (Sandbox Code Playgroud)