Несколько расширяет или несколько этапов? - PullRequest
0 голосов
/ 24 октября 2019

Я хочу, чтобы CI развернул две команды («bash X» и «bash Y») на разных производственных серверах (сервер 1, сервер 2, сервер 3 и т. Д.).

Я посмотрелна несколько этапов, но, похоже, не отвечает на мой вопрос. Мне все равно, работает ли он параллельно или B после A. (раздел руководства посвящен отладке)

Я не знаю, как это сделать: я пробовал с несколькими расширениями, но он берет толькопоследний (bashB) в моем конвейере.

stages:
  - get_password
  - bashA
  - bashB

get_password:
  stage: get_password

# Steps

.bashA:
  stage: bashA
  script:
    - lorem ipsum
  when: manual
  only:
    changes:
      - script/bashA.sh

.bashB:
  stage: bashB
  script:
    - ipsum loreem
  when: manual
  only:
    changes:
      - script/bashB.sh

# SRV1
deploy-srv1:
  extends: 
    - .bashA
    - .bashB
  variables:
    SRV_1: urlsrv1

# SRV2
deploy-srv2:
  extends: 
    - .bashA
    - .bashB
  variables:
    SRV_1: urlsrv2

Я просто хочу иметь возможность развертывать bashA и bash B на X-серверах (я только что взял 2 сервера, например).

1 Ответ

0 голосов
/ 30 октября 2019

При использовании множественного расширения в GitLab некоторые значения не будут объединены, а будут перезаписаны. Если вы проверите документацию здесь:

https://docs.gitlab.com/ee/ci/yaml/#extends

Они пишут:

Алгоритм, используемый для слияния, «выигрывает ближайшая область действия», поэтому ключи отпоследний член всегда будет затенять все, что определено на других уровнях

Вы не одиноки в желании, чтобы функция могла объединять сценарии вместо их перезаписи. Вот открытый вопрос о GitLab, чтобы сделать то, что вы описали:

https://gitlab.com/gitlab-org/gitlab/issues/16376

А пока, только взглянув на приведенный вами пример, вы можете получить что-то наподобие того, что вы хотите, вручнуюобъединение bashA и bashB в одну работу:

stages:
  - get_password
  - bash

get_password:
  stage: get_password

# Steps

.bash_both:
  stage: bash
  script:
    - lorem ipsum
    - ipsum loreem
  when: manual
  only:
    changes:
      - script/bashA.sh
      - script/bashB.sh

# SRV1
deploy-srv1:
  extends: 
    - .bash_both
  variables:
    SRV_1: urlsrv1

# SRV2
deploy-srv2:
  extends: 
    - .bash_both
  variables:
    SRV_1: urlsrv2
...