我的CI配置中有许多规则,还有许多锚点。每项工作多次提及rules:
对门楣人来说并不违法,但同一个门楣对测试多个rules:
子句是否相加以及按哪个顺序相加没有帮助。
所以问题是,现在我必须在每一份工作中重复一套略有变化的规则。
.build-rules: &build-rules
rules:
- if: '$DEPLOY_TAG'
when: never
- if: '$CI_COMMIT_REF_NAME == "master"'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_COMMIT_REF_NAME =~ "/^v[0-9]+.[0-9]+.*$/"'
job_with_changed_rule:
<<: *build-rules
rules:
- if: '$DEPLOY_TAG'
script:
- do something
job_with_another_rule:
<<: *build-rules
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
script:
- do something else
在Gitlab 14.3之前,你唯一能做的就是放置extends
块
但现在您可以使用!reference
标记重用其他作业中的规则。
有关更多详细信息,请参阅本文档