仅当参考或可变条件时,才能执行GitLab运行器作业

时间:2020-03-17 16:42:03

标签: gitlab gitlab-ci gitlab-ci-runner

我希望CI仅在我处于 master 合并要求 t,预定管道 OR < / strong>,如果变量COVERAGE_TEST等于ON

c++TestCoverage:
  stage: analysis
  script: "./ciScripts/testCoverageScript.sh"
  tags:
    - framework
  dependencies:
    - c++Build
  variables:
    GIT_STRATEGY: fetch
  artifacts:
    paths:
      - ./build/test_coverage/
    expire_in: 1 week
    when: on_success

我尝试添加下一行:

only:
  refs:
    - master
    - merge_requests
    - schedule
  variables:
    - $COVERAGE_TEST == "ON"

但是结果却是准确的-> 如果((Master || MergeRequest || ScheduledPipeline)&& COVERAGE_TEST == ON)


我也尝试过:

only:
  variables:
    - $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
    - $CI_PIPELINE_SOURCE == 'merge_request_event'
    - $CI_PIPELINE_SOURCE == 'schedule'
    - $COVERAGE_TEST == "TRUE" 

但是CI_PIPELINE_SOURCE == 'merge_request_event'不能按我的要求工作,因为如果合并请求中有分支并且我推送了一些更改,则CI_PIPELINE_SOURCE的值为push


有办法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用rulesif Group测试所有变量值,并在测试之间进行“或”运算。

您的情况下正确的配置应该是:

  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "schedule" || $COVERAGE_TEST == "TRUE"'
      when: always