我希望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
有办法吗?
答案 0 :(得分:1)
您需要使用rules
和if
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