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

时间:2019-02-27 08:35:55

标签: gitlab-ci

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

4 个答案:

答案 0 :(得分:2)

您可以将受保护的变量添加到您的项目(或组)中。 假设您已将变量PROTECTED设置为任意值,则可以使用

only:
    variables:
        - $PROTECTED

在您的.gitlab-ci.yml中检查该变量是否存在(因为受保护的变量仅传递给受保护的分支)。

答案 1 :(得分:1)

在Gitlab 11.11中,您可以检查此访问环境变量CI_COMMIT_REF_PROTECTED

only:
    variables:
        - $CI_COMMIT_REF_PROTECTED

参考:

答案 2 :(得分:0)

only:variables:CI_COMMIT_REF_PROTECTED结合使用似乎可以很好地解决您的问题,但是如果不进行实验,很难确定细节。

predefined variable CI_COMMIT_REF_PROTECTED的文档有点不清楚。

If the job is running on a protected branch

我希望仅在分支受保护的情况下设置CI_COMMIT_REF_PROTECTED,但是看来它是一个布尔值。这意味着我们应该检查字符串"true"而不是变量的存在。请参见variables -> supported syntax,规则1。使用字符串进行相等匹配。

综合起来,我想说一个完整的解决方案可以清楚地表达您的意图,那就是:

only:
  refs:
    - branches
  variables:
    - $CI_COMMIT_REF_PROTECTED == "true"

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

答案 3 :(得分:0)

应该使用

rules:if

rules:
  - if: '$CI_COMMIT_REF_PROTECTED == "true"'

only:variables: datar