Ale*_*z49 5 gitlab gitlab-ci gitlab-ci-runner
我希望 CI 仅在我位于master、合并请求、计划管道 或变量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
Run Code Online (Sandbox Code Playgroud)
我尝试添加以下几行:
only:
refs:
- master
- merge_requests
- schedule
variables:
- $COVERAGE_TEST == "ON"
Run Code Online (Sandbox Code Playgroud)
但结果实际上是 -> If ((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"
Run Code Online (Sandbox Code Playgroud)
但CI_PIPELINE_SOURCE == 'merge_request_event'不能按我想要的方式工作,因为如果我在合并请求中有分支并且我推送了一些更改,则值CI_PIPELINE_SOURCE是push
有办法做到吗?
您需要使用rulesandif 关键字来测试所有变量值,并在测试之间放置 OR。
您的情况的正确配置应该是:
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "schedule" || $COVERAGE_TEST == "TRUE"'
when: always
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5267 次 |
| 最近记录: |