即使一个失败(有依赖关系),Gitlab也将执行下一阶段

时间:2019-03-25 13:42:47

标签: continuous-integration gitlab

我正在建立一个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

1 个答案:

答案 0 :(得分:1)

请参阅allow_failure选项:

  

allow_failure允许作业失败而不会影响其余CI套件。

示例:

job1:
  stage: test
  script:
    - execute_script_that_will_fail
  allow_failure: true