我正在建立一个gitlab管道,该管道具有多个阶段,每个阶段至少有两个站点。即使第一阶段中的一个站点发生故障(以及标记为整个阶段的整个阶段),我如何有条件地允许下一阶段继续进行?例如:我要准备,构建和测试,并且要在Windows和Linux运行器上进行。因此,如果我的Linux运行程序准备失败,但我的Windows运行程序成功,那么下一步应该不开始构建Linux软件包,因为这已经失败了。但是Windows构建应该开始。
我的目的是,如果一个系统发生故障,至少第二个系统能够继续工作。
我添加了依赖性,我认为这可以解决我的问题。因为如果站点“ build windows”依赖于“ prepare windows”,那么“ prepare Linux”是否失败都没有关系。事实并非如此:/
image: node:10.6.0
stages:
- prepare
- build
- test
prepare windows:
stage: prepare
tags:
- windows
script:
- npm i
- git submodule foreach 'npm i'
prepare linux:
stage: prepare
tags:
- linux
script:
- npm i
- git submodule foreach 'npm i'
build windows:
stage: build
tags:
- windows
script:
- npm run build-PWA
dependencies:
- prepare windows
build linux:
stage: build
tags:
- linux
script:
- npm run build-PWA
dependencies:
- prepare linux
unit windows:
stage: test
tags:
- windows
script:
- npm run test
dependencies:
- build windows
artifacts:
paths:
- dist/
- package.json
expire_in: 5 days
unit linux:
stage: test
tags:
- linux
script:
- npm run test
dependencies:
- build linux
artifacts:
paths:
- dist/
- package.json
expire_in: 5 days
答案 0 :(得分:1)
请参阅allow_failure选项:
allow_failure允许作业失败而不会影响其余CI套件。
示例:
job1:
stage: test
script:
- execute_script_that_will_fail
allow_failure: true