Gitlab выполняет следующую стадию, даже если одна не удалась (с зависимостью) - PullRequest
0 голосов
/ 25 марта 2019

Я устанавливаю конвейер gitlab с несколькими этапами и, по крайней мере, двумя сайтами на каждом этапе. Как iIconditional позволяют продолжить следующий этап, даже если один сайт на первом этапе вышел из строя (и весь этап, как он помечен как отказавший)? Например: я хочу подготовить, собрать и протестировать, и я хочу сделать это на Windows & Linux Runner. Так что, если мой Linux runner не прошел подготовку, но мой Windows runner был успешным, то следующий этап должен начинаться с без сборки пакета Linux, потому что это уже не удалось. Но сборка окон должна начаться.

Мое намерение состоит в том, что если одна система выходит из строя, по крайней мере, вторая может продолжить работу.

Я добавил зависимости и подумал, что это решит мою проблему. Потому что, если «сборка окон» сайта зависит от «подготовить окна», то не имеет значения, если «подготовить 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 Ответ

1 голос
/ 25 марта 2019

См. allow_failure опция:

allow_failure позволяет сбою задания без влияния на остальную часть набора CI.

пример:

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