如何将 rule:if 的 GitLab CI 作业与矩阵和 allow_failure 相结合?
How to combine GitLab CI job for rule:if with matrix and allow_failure?
我需要像这样配置我的 GitLab CI 作业:
- 只有
$CI_PIPELINE_SOURCE == "merge_request_event"
的作业被添加到管道,
matrix
为矩阵 PHP_VERSION: [ '7.4', '8.0', '8.1' ]
定义的每个版本多次运行作业。
'8.1'
必须但与 allow_failure: true
一起运行。
我尝试编写规则 直观 因为我除了规则有效,但我得到了不同的结果。
我第一次尝试这个:
parallel:
matrix:
- PHP_VERSION: [ '7.4', '8.0', '8.1' ]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: on_success
- if: '$PHP_VERSION == "8.1"'
allow_failure: true
它只对 PHP 8.1 us 添加到管道的 MR 事件产生结果。
我的下一次迭代仍然是错误的:
parallel:
matrix:
- PHP_VERSION: [ '7.4', '8.0', '8.1' ]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: on_success
- if: '$PHP_VERSION == "8.1"'
when: on_success
allow_failure: true
- when: on_success
这看起来更好,但它会为每个其他事件运行作业(不仅 merge_request_event
)。
我如何正确组合规则以获得我上面声明的结果?
你可以试试
parallel:
matrix:
- PHP_VERSION: [ '7.4', '8.0', '8.1' ]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: on_success
- if: '$PHP_VERSION == "8.1"'
when: on_success
allow_failure: true
- if: '$PHP_VERSION'
when: on_success
allow_failure: false
基于https://docs.gitlab.com/ee/ci/jobs/job_control.html#run-a-matrix-of-parallel-trigger-jobs
执行示例
我需要像这样配置我的 GitLab CI 作业:
- 只有
$CI_PIPELINE_SOURCE == "merge_request_event"
的作业被添加到管道, matrix
为矩阵PHP_VERSION: [ '7.4', '8.0', '8.1' ]
定义的每个版本多次运行作业。'8.1'
必须但与allow_failure: true
一起运行。
我尝试编写规则 直观 因为我除了规则有效,但我得到了不同的结果。
我第一次尝试这个:
parallel:
matrix:
- PHP_VERSION: [ '7.4', '8.0', '8.1' ]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: on_success
- if: '$PHP_VERSION == "8.1"'
allow_failure: true
它只对 PHP 8.1 us 添加到管道的 MR 事件产生结果。
我的下一次迭代仍然是错误的:
parallel:
matrix:
- PHP_VERSION: [ '7.4', '8.0', '8.1' ]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: on_success
- if: '$PHP_VERSION == "8.1"'
when: on_success
allow_failure: true
- when: on_success
这看起来更好,但它会为每个其他事件运行作业(不仅 merge_request_event
)。
我如何正确组合规则以获得我上面声明的结果?
你可以试试
parallel:
matrix:
- PHP_VERSION: [ '7.4', '8.0', '8.1' ]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: on_success
- if: '$PHP_VERSION == "8.1"'
when: on_success
allow_failure: true
- if: '$PHP_VERSION'
when: on_success
allow_failure: false
基于https://docs.gitlab.com/ee/ci/jobs/job_control.html#run-a-matrix-of-parallel-trigger-jobs
执行示例