首页 > 解决方案 > 如何将 Gitlab 中的 CI_COMMIT_REF 与值列表进行比较?

问题描述

只有当分支不等于开发、测试或主控时,我才想在 Gitlab 中运行一组作业。这是代码的样子:

Test:
  stage: test
  rules:
    - if: $CI_COMMIT_REF == 'develop' || $CI_COMMIT_REF == 'test' || $CI_COMMIT_REF == 'master'
      when: never
  script:
    - echo "Test!"

我想知道是否有一种有效/更短的方法来执行此操作,例如 IN 或 CONTAINS 关键字。谢谢!

标签: devopsgitlab-ci

解决方案


你也可以使用正则表达式来完成这样的任务——但你有正则表达式;)

Test:
  stage: test
  rules:
    - if: $CI_COMMIT_REF_NAME =~ /^(develop|master|test)$/
      when: never
  script:
    - echo "Test!"

这是我能想到的唯一方法smaller。但请注意,较小的并不总是更容易调试或阅读。这是一个小的正则表达式,它很容易 - 但正则表达式可能会增加您可能想要避免的另一个级别的复杂性。

为了进一步阅读,我推荐https://docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-clauses-for-rules


推荐阅读