假设我们有一个.gitlab-ci.yml文件,它读取一个common.gitlab-ci.complete.yml文件:
include: common.gitlab-ci.complete.yml假设common.gitlab-ci.complete.yml有以下几个阶段:
stages:
- build
- unit-test
- mutation-test在.gitlab-ci.yml文件中,我们如何忽略unit-test和mutation-test阶段?会不会是这样:
include: common.gitlab-ci.complete.yml
stages:
- build
#- unit-test
#- mutation-test这些stages会覆盖common.gitlab-ci.complete.yml文件中的那个吗?
发布于 2022-06-03 16:21:54
(我还没有检查这个代码是否准确。将其视为伪码。)
你要求在一个阶段取消所有的工作。如果您查看documentation for the include:关键字,您将注意到YAML始终与当前的CI脚本合并。所以不,你不能只添加一个语句,比如“禁用A阶段中的所有作业”。
我有个主意..。回想一下
如果定义了一个阶段,但没有作业使用它,则该阶段在管道中不可见.
https://docs.gitlab.com/ee/ci/yaml/#stages
因此,您可以做的是添加一个机制来禁用该阶段的所有作业。然后舞台也会消失。该机制可能正在检查rules中的一个变量。
因此,如果您使用检查变量以禁用作业的模板编写common.gitlab-ci.complete.yml .
stages:
- build
- unit-test
- package
.unit-test-stage:
stage: unit-test
when: on_success
rules:
- if: $DISABLE_UNIT_TESTS
when: never
unit-test-job-a:
extends: .unit-test-stage
script:
- echo "do stuff"
unit-test-job-b:
extends: .unit-test-stage
script:
- echo "do more stuff"然后,您的顶级.gitlab-ci.yml可能只需在其全局variables部分中设置已知变量,如下所示:
include: common.gitlab-ci.complete.yml
variables:
DISABLE_UNIT_TESTS: 1https://stackoverflow.com/questions/72492055
复制相似问题