目前,我正在每一项工作中复制有关
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
...
为了完整性,我已经包含了这种方法,但通常使用
extends
几乎总是更好。
.skip-ci: &skip-ci
except:
variables:
- $CI_COMMIT_MESSAGE =~ /skip-ci/
job1:
<<: *skip-ci
...
job2:
<<: *skip-ci
...
job3:
<<: *skip-ci
...
当您允许所有可能性时,将实现完整的功能
来自gitlab源代码
SKIP_PATTERN = /\[(ci[ _-]skip|skip[ _-]ci)\]/i
https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/pipeline/chain/skip.rb#L10