Перейти к содержанию

Окружения


Окружения - функционал, который позволяет управлять различными конфигурациями развертывания кода на различных этапах жизненного цикла ПО. Данный функционал позволяет:

  1. Поддерживать последовательность и повторяемость процесса развертывания
  2. Отслеживать, какой код где развернут
  3. Откатываться к предыдущей версии развертывания при возникновении каких-либо проблем
  4. Защищать конфиденциальные окружения от изменений или несанкционированного запуска от лица человека, у которого нет прав на развертывание
  5. Контролировать переменные развертывания для каждого окружения, для поддержания границ безопасности

Окружения

В каждом окружении хранится история развертываний. Для повторного развертывания необходимо нажать кнопку повторить

Развертывания

Типы окружений

Окружение может быть статическим или динамическим.

Статические окружения

  • Обычно повторно используются последовательными развертываниями.
  • Имеют статические имена, например: staging или production.
  • Создаются вручную или как часть конвейера CI/CD.

Создание статического окружения

Вы можете создать статическое окружение, используя пользовательский интерфейс или файл gitflic-ci.yaml.

Создание окружения

В файле gitflic-ci.yaml выполните следующие шаги:

  1. Определите задачу со stage: deploy.
  2. В задаче укажите наименование окружения и 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 выполните следующие шаги:

  1. Определите задачу со stage: deploy.
  2. В задаче укажите следующие атрибуты среды:
  3. name: используйте связанную переменную CI/CD, например $CI_COMMIT_REF_NAME.
    Также можно добавить статический префикс к имени среды для группировки окружений в пользовательском интерфейсе.
  4. 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.

Остановка окружения

Остановка окружения означает, что его развертывания становятся недоступными на целевом сервере.

Окружение должно быть остановлено перед его удалением.

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

  1. В задаче, в которой происходит развертывание в параметре on_stop указать имя задачи, которую нужно запустить для выполнения остановки окружения
  2. В указанной задаче остановки необходимо установить 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 переменные доступны во всех задачах в рамках конвейера.

Однако, вы можете:

  • Ограничить видимость переменной для конкретного окружения.
  • Задать разные значения переменной для разных окружений.

Для настройки переменных для окружений необходимо:

  1. Перейти в свой проект/команду/компанию.
  2. Перейти в Настройки -> Настройки CI/CD.
  3. Для создания новой переменной указать:

    • Ключ переменной.
    • Значение переменной.
    • Наименование окружения, в котором данная переменная должна быть доступной.
  4. Сохранить изменения.

Защищенные окружения

Функционал доступен в Enterprise версии, а также на gitflic.ru

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

Для настройки защиты окружений необходимо:

  1. Перейти в проект.
  2. Перейти в Настройки.
  3. Выбрать раздел Защита окружений.
  4. В поле "Окружение" ввести наименование конкретного окружения или wildcard шаблон.
  5. В поле "Разрешение для развертывания" выбрать, кто может создавать развертывания в данном окружении.
    Допустимые значения:
    • Никто
    • Админы + Разработчики
    • Админы
  6. Нажмите "Включить защиту".

Защищенные окружения видны на этой же странице.

Защищенные окружения