Как установить ручные этапы в Gitlab CI?

Кажется, я не могу найти никакой документации по ручной постановке в Gitlab CI версии 8.9. Как выполнить ручной этап, такой как «Развертывание для тестирования»?

Я бы хотел, чтобы Gitlab CI развернул успешный RPM для разработчиков, а затем, как только я его рассмотрю, отправлю его на тестирование, а оттуда сгенерирует выпуск. Возможно ли это в настоящее время с Gitlab CI?


person Routhinator    schedule 09.08.2015    source источник


Ответы (3)


Обновление: ручные действия были введены в GitLab 8.10. Из руководства «Ручные действия - это особый тип заданий, которые не выполняются автоматически; они должны быть явно запущены пользователем. Ручные действия могут быть запущены из представлений конвейера, сборки, среды и развертывания. Вы можете выполнить то же руководство действие несколько раз ". Примером использования ручных действий является развертывание в производственной среде. Остальная часть этого ответа относится только к Gitlab 8.9 и старше.

Исторический ответ:

Не похоже, что ручное развертывание / выпуск было доступно в Gitlab в версии 8.9.

Одна из возможностей - иметь защищенную ветку, которая запускает релиз. См. Информацию о защищенных ветках здесь: http://doc.gitlab.com/ce/workflow/protected_branches.html

По сути, защищенная ветка позволит вам создать ветку (testdeploybranch), в которую только вам будет разрешено объединять код. Каждый раз, когда коммит для разработчика проходит тесты Gitlab CI и задания развертывания, а также ваш ручной обзор, вы можете объединить этот коммит в защищенную ветку, чтобы запустить выпуск. Затем для этой ветки вы можете настроить специальное задание выпуска в Gitlab CI, используя параметр only в определении задания .gitlab-ci.yml. Подробнее читайте здесь: http://doc.gitlab.com/ci/yaml/README.html

Так что-то вроде этого:

release:
  only: testdeploybranch
  type: release
  script: some command or script invocation to deploy to Test

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

person Snorre    schedule 18.08.2015
comment
Я собираюсь дать аромату покипеть на этом в течение 48 часов, но, скорее всего, это станет общепринятым ответом. Это не так хорошо, как нажатие кнопки в Bamboo .. Но перейти к определенной ветке не так уж и сложно. Gitlab-CI должен добавить параметр ручного запуска к заданиям сборки. - person Routhinator; 18.08.2015
comment
Что касается развертывания одного и того же выпуска на нескольких серверах, я бы, скорее всего, просто разместил выпуск на сервере share / artifactory / archiva и оттуда запустил развертывание марионетки / saltstack. Другим вариантом может быть ветка моментального снимка и ветка выпуска. При отправке в моментальный снимок создается моментальный снимок, который развертывается для тестирования, а затем, если он проходит, выполняется нажатие на выпуск, который планирует развертывание в продукте. - person Routhinator; 18.08.2015
comment
[Ручные действия] [1] были введены в GitLab 8.10. [1]: docs.gitlab.com/ce/ci/ yaml / README.html # manual-actions - person aux; 21.08.2016
comment
Спасибо, Уоррен, за обновление ответа. - person Snorre; 14.09.2016

Вы можете настроить выполнение задач вручную, используя when: manual в задании (документация).

Так, например, если вы хотите, чтобы развертывание происходило при каждом нажатии, но даете возможность вручную разорвать инфраструктуру, сделайте это следующим образом:

stages:
  - deploy
  - destroy

deploy:
  stage: deploy
  script:
    - [STEPS TO DEPLOY]

destroy:
  stage: destroy
  script:
    - [STEPS TO DESTROY]
  when: manual

С приведенной выше конфигурацией, если вы перейдете в проект GitLab> Pipelines, вы должны увидеть кнопку воспроизведения рядом с последней фиксацией. Когда вы нажимаете кнопку воспроизведения, вы можете увидеть опцию destroy.

person LondonAppDev    schedule 12.12.2018
comment
ВОТ ВТОР! Остальные ошибочны или бесполезны - person Sliq; 05.04.2019

Наконец, у нас есть ручные действия, которые выполнялись вручную. представлен в GitLab 8.10.

person aux    schedule 21.08.2016
comment
Правильный URL-адрес: docs.gitlab.com/ce/ci/yaml/README. .html # whenmanual - person Ezh; 19.04.2019