Порядок исполнения .gitlab-ci - PullRequest
0 голосов
/ 02 мая 2019

У меня есть этот файл .gitlab-ci.yml:

stepA:
  script:
    - echo "A"
deploy:
  script:
    - echo "1"
stepB:
  script:
    - echo "B"

Как мне установить, какой этап должен запускаться первым?Некоторые задания могут выполняться параллельно несколькими бегунами gitlab.Я просто хочу убедиться, что шаги от А до Б завершены, прежде чем запускать этап развертывания

Ответы [ 2 ]

1 голос
/ 02 мая 2019

enter image description here Ниже код используется в наследовании

Stages:
  - Step-A
  - Step-B
  - Deploy

.Perform-Step-A:
  stage: Step-A
  script:
   - echo "A"

.Perform-Step-B:
  stage: Step-B
  script:
   - echo "B"

.Perform-Deploy:
  stage: Deploy
  script:
   - echo "1"

Server1-Step-A:
  extends: .Perform-Step-A
  tags: Server-1-As-Runner //Else add SSH steps in Perfrom-A block

Server1-Step-B:
  extends: .Perform-Step-B
  tags: Server-1-As-Runner //Else add SSH steps in Perfrom-B block

Server1-Step-Deploy:
  extends: .Perform-Deploy
  tags: Server-1-As-Runner //Else add SSH steps in Perfrom-Deploy block

Допущения:

  1. Выиспользуют выделенные бегуны для вашего приложения и бегуны, настроенные на одном компьютере.Если нет, пожалуйста, не стесняйтесь вносить изменения и ssh.
  2. Это концептуальный строительный блок, на который я отвечаю, и который можно настроить в зависимости от требований.

  3. Лучше всего сработало в моем случае при развертывании на нескольких серверах за один раз.

ПРИМЕЧАНИЕ: теги удалены изизображение из соображений конфиденциальности.

0 голосов
/ 02 мая 2019

Это именно то, для чего stages.Вы используете слово «этап» здесь, когда на самом деле описывает «работу».

Задания на одном и том же этапе могут выполняться параллельно (если у вас есть участники, поддерживающие его), но этапы выполняются по порядку.

Сначала определите свои 2 этапа на верхнем уровне .gitlab-ci.yml:

stages:
  - build
  - dist

Затем на каждом задании укажите этап, к которому оно относится:

stepA:
  stage: build
  script:
    - echo "A"
deploy:
  stage: dist
  script:
    - echo "1"
stepB:
  stage: build
  script:
    - echo "B"

Теперь stepA и stepB будут выполняться первыми (в любом порядке или дажепараллельно), за которым следует deploy при условии, что первая стадия прошла успешно.

...