Skip to content

Latest commit

 

History

History
54 lines (31 loc) · 4.16 KB

File metadata and controls

54 lines (31 loc) · 4.16 KB

CI / CD

  1. Чем отличается Continuous Integration от Continuous Delivery от Continuous Deployment?
Ответ

Continuous Integration (непрерывная интеграция) - практика интеграции изменений кода из ветки разработки в основную ветку путём инструментов для интеграции.

Continuous Delivery (непрерывная доставка) - практика содержания кода в репозитории в состоянии пригодным для разворачивания на рабочее окружение.

Continuous Deployment (непрерывное разворачивание) - практика доставки каждого изменения в коде продукта на рабочее окружение.

Разница между Continuous Delivery и Continuous Deployment очень маленькая. Представим два пайплайна для одного и того же приложения. В каждом есть шаги:

  1. Source Control - внесение изменений в систему контроля версий ПО.
  2. Build - сборка приложения и прогон unit тестов
  3. Staging - деплой на тестовое окружение, прогон интеграционных, нагрузочных и других тестов
  4. Production - деплой на окружение с пользователями

Каждый пайплайн запускается автоматически по триггеру из системы контроля версий. В случае Continuous Deployment каждый следующий шаг, будет выполнен автоматически если предыдущий был успешный, включая деплой на Production.

Если же у вас Continuous Delivery, то шаги будут выполняться автоматически только в безопасной среде, а перед деплоем на Production пайплайн остановится и будет ждать ручного подтверждения. Механизм, как это будет реализовано может быть разным. От самого простого, когда ответственный человек должен зайти в пайплайн и нажать кнопку Next, до интерактивного бота с кнопками в корпоративном мессенджере.

  1. Что означает конструкция when: always в stage блоке в gitlab CI?
Ответ

Данная конструкция означает, что stage будет запущен вне зависимости от успешности предыдущего шага.

  1. Что выполняет конструкция extends: .plan в gitlab CI?
Ответ

extends используется для повторного использования секции пайплайна (аналог фунции). .plan указывает на имя повторяемой секции в пайплайне. Первым в шаге выполняется скрипт из extends.

  1. В gitlab CI необходимо, чтобы джоба выполнялась всегда только при ручной активации. Что для этого необходимо сделать?
Ответ

Необходимо добавить when: manual в описание заданной джобы. По-умолчанию при использовании when: manual параметр allow_failure установлен в true, поэтому данная джоба будет запускаться автоматически. Чтобы такого не было необходимо также установить параметр allow_failure: false.