Окружения
Окружения - функционал, который позволяет управлять различными конфигурациями развертывания кода на различных этапах жизненного цикла ПО. Данный функционал позволяет:
- Поддерживать последовательность и повторяемость процесса развертывания
- Отслеживать, какой код где развернут
- Откатываться к предыдущей версии развертывания при возникновении каких-либо проблем
- Защищать конфиденциальные окружения от изменений или несанкционированного запуска от лица человека, у которого нет прав на развертывание
- Контролировать переменные развертывания для каждого окружения, для поддержания границ безопасности
В каждом окружении хранится история развертываний. Для повторного развертывания необходимо нажать кнопку повторить
Типы окружений
Окружение может быть статическим или динамическим.
Статические окружения
- Обычно повторно используются последовательными развертываниями.
- Имеют статические имена, например:
staging
илиproduction
. - Создаются вручную или как часть конвейера CI/CD.
Создание статического окружения
Вы можете создать статическое окружение, используя пользовательский интерфейс или файл gitflic-ci.yaml
.
В файле gitflic-ci.yaml
выполните следующие шаги:
- Определите задачу со
stage: deploy
. - В задаче укажите наименование окружения и URL.
Если окружение с таким наименованием не существует при запуске конвейера, оно будет создано.
Для создания окружения с наименованием staging
и URL https://staging.example.com
, используйте следующий код:
deploy_staging:
stage: deploy
script:
- echo "Выполняется развертывание в staging среде"
environment:
name: staging
url: https://staging.example.com
Динамические окружения
- Обычно создаются в конвейере CI/CD и используются только одним развертыванием, затем либо останавливаются, либо удаляются.
- Имеют динамические имена, обычно основанные на значении переменной CI/CD.
Создание динамического окружения
Чтобы создать динамическое окружение, используйте уникальные переменные CI/CD.
В файле gitflic-ci.yaml
выполните следующие шаги:
- Определите задачу со
stage: deploy
. - В задаче укажите следующие атрибуты среды:
- name: используйте связанную переменную CI/CD, например
$CI_COMMIT_REF_NAME
.
Также можно добавить статический префикс к имени среды для группировки окружений в пользовательском интерфейсе. - url (необязательный параметр): добавьте к имени хоста префикс связанной переменной CI/CD, например
$CI_ENVIRONMENT_SLUG
.
В следующем примере при каждом запуске задачи deploy_review
имя среды и URL определяются с использованием уникальных значений:
deploy_review:
stage: deploy
script: make deploy
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://$CI_ENVIRONMENT_SLUG.example.com
Состояния окружения
Окружение может находиться в одном из трех состояний в зависимости от того, запущена ли его задача остановки:
- available: окружение существует. Возможно, есть развертывание.
- stopping: задача остановки (
on_stop
) запущена. Это состояние не применяется, если задача остановки не определена. - stopped: либо задача остановки выполнена, либо пользователь остановил окружение вручную.
Уровень развертывания окружений
Если наименование окружения не отражает его принадлежность к определенной среде, используйте ключевое слово deployment_tier
, чтобы указать соответствующий уровень.
Возможные значения:
- production
- staging
- testing
- development
- other
Если значение не задано, по умолчанию используется значение other
.
Остановка окружения
Остановка окружения означает, что его развертывания становятся недоступными на целевом сервере.
Окружение должно быть остановлено перед его удалением.
Остановка окружения может быть произведена через пользовательский интерфейс с помощью соответствующей кнопки остановки. Если для остановки окружения необходимо выполнить како-либо набор скриптов, то необходимо:
- В задаче, в которой происходит развертывание в параметре
on_stop
указать имя задачи, которую нужно запустить для выполнения остановки окружения - В указанной задаче остановки необходимо установить
action: stop
, а так же тип задачи - ручная при помощи ключевого словаmanual
, например используя конструкциюwhen: manual
build:
stage: build
script:
- echo "Building the app"
environment:
name: staging
on_stop: stop-job
stop-job:
stage: build
when: manual
script:
- echo "Stopp the app"
environment:
name: staging
action: stop
Удаление окружения
При удалении окружения удаляются все связанные с ним развертывания.
Удаление окружения может быть произведено через пользовательский интерфейс с помощью соответствующей кнопки удаления, которую можно найти на вкладке с остановленными окружениями.
Доступ к окружению для подготовки или проверки
Вы можете определить задачу, которая обращается к окружению для различных целей, например, проверка или подготовка. Это позволяет обойти создание развертывания и настроить процесс CD более точно.
Для этого следует добавить в раздел environment
:
action: prepare
action: verify
action: access
build:
stage: build
script:
- echo "Building the app"
environment:
name: staging
action: prepare
url: https://staging.example.com
deployment_tier: staging
CI/CD переменные для окружений
По умолчанию созданные CI/CD переменные доступны во всех задачах в рамках конвейера.
Однако, вы можете:
- Ограничить видимость переменной для конкретного окружения.
- Задать разные значения переменной для разных окружений.
Для настройки переменных для окружений необходимо:
- Перейти в свой проект/команду/компанию.
- Перейти в Настройки -> Настройки CI/CD.
-
Для создания новой переменной указать:
- Ключ переменной.
- Значение переменной.
- Наименование окружения, в котором данная переменная должна быть доступной.
-
Сохранить изменения.
Защищенные окружения
Функционал доступен в Enterprise версии, а также на gitflic.ru
Поскольку задачи по развертыванию могут выполнять пользователи с разными ролями, важно защитить определенные окружения от воздействия неавторизованных пользователей. По умолчанию, защищенное окружение гарантирует, что развертывание в нем смогут осуществлять только лица с соответствующими привилегиями, что обеспечивает безопасность окружения.
Для настройки защиты окружений необходимо:
- Перейти в проект.
- Перейти в Настройки.
- Выбрать раздел Защита окружений.
- В поле "Окружение" ввести наименование конкретного окружения или wildcard шаблон.
- В поле "Разрешение для развертывания" выбрать, кто может создавать развертывания в данном окружении.
Допустимые значения:- Никто
- Админы + Разработчики
- Админы
- Нажмите "Включить защиту".
Защищенные окружения видны на этой же странице.