GitLab CI:避免每个作业重复 skip-ci
GitLab CI: avoid duplication of skip-ci for each job
目前,我在每个作业中复制有关 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/
...
有没有什么办法可以只写一次就适用于所有的工作?
在 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
...
如果你不完全依赖 skip-ci
,Gitlab 已经包含了这个逻辑:
根据 to the docs.
,当提交消息包含 [skip ci]
或 [ci skip]
时,将跳过管道
目前,我在每个作业中复制有关 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/
...
有没有什么办法可以只写一次就适用于所有的工作?
在 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
...
如果你不完全依赖 skip-ci
,Gitlab 已经包含了这个逻辑:
根据 to the docs.
[skip ci]
或 [ci skip]
时,将跳过管道