gitlab规则:防止在特定路径上运行

问题描述 投票:0回答:2

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 上运行。 这里有什么问题?我该如何解决?

gitlab rules
2个回答
0
投票

它总是阻止管道在 main 上运行

需要另一个规则

when: always
来触发它。

  rules:
    - if: $CI_COMMIT_REF_NAME
      changes:
        - "**/*.md"
        - "**/docs/*"
      when: never

    - when: always    

0
投票

来自rules:

上的docs:

规则在创建管道时进行评估,并按顺序评估直到第一次匹配。找到匹配项后,该作业将包含在管道中或从管道中排除,具体取决于配置。

作业添加到管道中:

  • 如果 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
© www.soinside.com 2019 - 2024. All rights reserved.