GitlabCi развернуть на нескольких серверах

Я использую Gitlab runner и отлично работает на одном сервере. Gitlab-ci.yml прост:

stages:
  - test
  - deploy

test:
  stage: test
  image: php
  tags:
      - docker
  script:
      - echo "Run tests..."
deploy:
    stage: deploy
    tags:
      - shell
    script:
      - sh deploy.sh

Как я уже сказал, это нормально для одного сервера, но для развертывания того же приложения на другом сервере? Я пробовал с той же конфигурацией gitlab-runner (тот же conf.toml), но тогда он обновлял только один из них случайным образом.

Есть ли как-то gitlab Ci, который должен запускаться более чем одним бегуном и развертывать их всех в соответствии с gitlab-ci.yml?


person Nick Doulgeridis    schedule 24.07.2016    source источник


Ответы (3)


Вы можете зарегистрировать несколько исполнителей (например, с тегами serverA и serverB) с разных серверов и иметь несколько заданий развертывания, каждое из которых выполняется другим исполнителем. Это связано с тем, что вы можете установить более одного тега в задании, и будет использоваться только бегун, имеющий все теги.

stages:
  - test
  - deploy

test:
  stage: test
  image: php
  tags:
      - docker
  script:
      - echo "Run tests..."

deployA:
    stage: deploy
    tags:
      - shell
      - serverA
    script:
      - sh deploy.sh

deployB:
    stage: deploy
    tags:
      - shell
      - serverB
    script:
      - sh deploy.sh

Однако примите во внимание ситуацию, когда одно из заданий развертывания не удается - это приведет к тому, что у вас будут две разные версии кода на серверах. В зависимости от вашей ситуации это может быть или не быть проблемой.

person tmt    schedule 25.07.2016
comment
да, также это может быть проблемой, если вы используете автоматическое масштабирование, и вы не знаете, сколько у вас серверов и их информацию - person Nick Doulgeridis; 25.07.2016
comment
Если это проблема, вам следует избегать этого. Имейте только одно задание по развертыванию и используйте инструмент, который будет выполнять развертывание на нескольких серверах. - person tmt; 25.07.2016

Да, есть, просто создайте два задания для одного и того же этапа:

stages:
  - deploy

deploy:one:
  stage: deploy
  script:
    - echo "Hello CI one"

deploy:two:
  stage: deploy
  script:
    - echo "Hello CI two"

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

person Martin    schedule 25.07.2016

С 2016 года у вас есть среды и развертывания

Среды описывают, где развертывается код.

Каждый раз, когда GitLab CI / CD развертывает версию кода в среде, создается развертывание.

GitLab:

  • Предоставляет полную историю развертываний в каждой среде.
  • Отслеживает ваши развертывания, чтобы вы всегда знали, что развернуто на ваших серверах.

Он действительно хорошо интегрируется с Prometheis и GitLab 13.11 (апрель 2021 г.), у вас даже есть:

Обновите период заморозки развертывания в пользовательском интерфейсе

В GitLab 13.2 мы добавили возможность создавать период замораживания развертывания в настройках CI / CD проекта.

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

Однако было невозможно обновить зависания развертывания.

В GitLab 13.11 мы добавляем возможность редактировать существующее замораживание развертывания. Таким образом, вы можете обновить период замораживания в соответствии с потребностями вашего бизнеса.

https://about.gitlab.com/images/13_11/update_deploy_freeze_1.png - Обновить период заморозки развертывания в пользовательском интерфейсе

См. документацию и Проблема.

Как показано в gitlab-ci.yml развертывании на нескольких хостах, вы можете использовать YAML anchors для запуска параллельного развертывания в нескольких средах, что означает несколько серверов.

person VonC    schedule 25.04.2021