Как создать ручной триггер для нескольких параллельных заданий - PullRequest
0 голосов
/ 04 октября 2018

Мне бы хотелось иметь блокирующее ручное действие, которое будет запускать несколько параллельных заданий на следующем этапе.Как мне этого добиться?Например:

  1. deploy-int выполняется при слиянии
  2. Конвейер ожидает единственного запуска вручную
  3. deploy-prd-1 и deploy-prd-2 runпараллельно

Вот что я пробовал:

1

stages:
  - deploy-dev
  - deploy-prd-1
  - deploy-prd-2

deploy-dev:
  stage: deploy-dev
  script:
    - echo deploy-dev

deploy-prd-1:
  when: manual
  allow_failure: false
  stage: deploy-prd-1
  script:
    - echo deploy-prd-1

deploy-prd-2:
  stage: deploy-prd-2
  script:
    - echo deploy-prd-2

Достигается 1 и 2, но происходит сбой на 3, как deploy-prd-1 и deploy-prd-2 последовательно, а не параллельно

2

stages:
  - deploy-dev
  - deploy-prd

deploy-dev:
  stage: deploy-dev
  script:
    - echo deploy-dev

deploy-prd-1:
  when: manual
  allow_failure: false
  stage: deploy-prd
  script:
    - echo deploy-prd-1

deploy-prd-2:
  stage: deploy-prd
  script:
    - echo deploy-prd-2

Это не работает на 2, так как deploy-prd-2 будет запускаться автоматически без ожидания при ручном триггере

3

stages:
  - deploy-dev
  - deploy-prd

deploy-dev:
  stage: deploy-dev
  script:
    - echo deploy-dev

deploy-prd-1:
  when: manual
  allow_failure: false
  stage: deploy-prd
  script:
    - echo deploy-prd-1

deploy-prd-2:
  when: manual
  allow_failure: false
  stage: deploy-prd
  script:
    - echo deploy-prd-2

Это не идеально, так как требует ручного запуска каждого параллельного задания отдельно.

4

stages:
  - deploy-dev
  - approve
  - deploy-prd

deploy-dev:
  stage: deploy-dev
  script:
    - echo deploy-dev

approve:
  when: manual
  allow_failure: false

deploy-prd-1:
  stage: deploy-prd
  script:
    - echo deploy-prd-1

deploy-prd-2:
  stage: deploy-prd
  script:
    - echo deploy-prd-2

Это моя попытка установить «ворота» вручную, но gitlab отклоняет файл с Error: jobs:approve script can't be blank.Я могу установить no-op как script: [":"], но теперь gitlab будет вращать контейнер, чтобы ничего не делать, что тратит время и ресурсы.

...