https://docs.gitlab.com/ee/ci/yaml/#rules
在Gitlab中,rules替换only/except关键字
我的回购协议总是有一些 src 代码、Dockerfile、...和文档:md 文件和 .docs 文件夹。 我的管道在回购协议上运行一些构建作业。 如果只更改文档,我不希望我的管道运行
我写了以下内容:
.never_for_md_or_docs: &never_for_md_or_docs
rules:
- if: $CI_COMMIT_REF_NAME
changes:
- "**/*.md"
- "**/docs/*"
when: never
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
我希望我的管道正常运行,但是当 .md 文件或文档文件夹中的任何内容发生更改时。
它没有达到我的预期:它总是阻止管道在 main 上运行。 这里有什么问题?我该如何解决?
它总是阻止管道在 main 上运行
需要另一个规则
when: always
来触发它。
rules:
- if: $CI_COMMIT_REF_NAME
changes:
- "**/*.md"
- "**/docs/*"
when: never
- when: always
来自rules:
规则在创建管道时进行评估,并按顺序评估直到第一次匹配。找到匹配项后,该作业将包含在管道中或从管道中排除,具体取决于配置。
和
作业添加到管道中:
- 如果 if、changes 或 exists 规则匹配并且还有
(默认)、when: on_success
或when: delayed
。when: always
- 如果达到的规则仅为
、when: on_success
或when: delayed
。when: always
所以看起来你需要:
.never_for_md_or_docs: &never_for_md_or_docs
rules:
- if: $CI_COMMIT_REF_NAME
changes:
- "**/*.md"
- "**/docs/*"
when: never
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always