如何将 gitlab CI 作业配置为仅在受保护的分支上运行?

Lou*_*ron 5 gitlab-ci

我正在尝试将 gitlab CI 作业配置为仅在受限分支上运行,但我找不到only执行此操作的指令。

Jay*_*d16 30

rules:if应该使用。

rules:
  - if: $CI_COMMIT_REF_PROTECTED == "true"
Run Code Online (Sandbox Code Playgroud)

only:variables: 已被弃用


Eri*_*len 8

在 Gitlab 11.11 中,您可以通过访问环境变量来检查此内容CI_COMMIT_REF_PROTECTED

only:
    variables:
        - $CI_COMMIT_REF_PROTECTED

Run Code Online (Sandbox Code Playgroud)

参考:


Fre*_*ger 8

使用only:variables:结合CI_COMMIT_REF_PROTECTED似乎是一个很好的解决你的问题,但在细节上难以确定,而不实验。

预定义变量 的文档CI_COMMIT_REF_PROTECTED有点不清楚。

If the job is running on a protected branch
Run Code Online (Sandbox Code Playgroud)

我希望CI_COMMIT_REF_PROTECTED只有在分支受到保护时才设置,但它似乎是一个布尔值。这意味着我们应该检查字符串"true"而不是变量的存在。请参阅变量 -> 支持的语法,规则 1。使用字符串进行相等匹配。

综上所述,我认为一个完整的解决方案可以清楚地表达您的意图:

only:
  refs:
    - branches
  variables:
    - $CI_COMMIT_REF_PROTECTED == "true"
Run Code Online (Sandbox Code Playgroud)

refs:branches如果您不希望作业在受保护的标签上运行,则这是必需的。