GitLab с выпадающими списками Variables

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

Введение

GitLab CI/CD предоставляет мощные возможности для автоматизации процессов сборки, тестирования и развертывания приложений. Однако, при работе с переменными окружения (Variables) часто возникает необходимость вручную вводить значения при запуске пайплайна, что может быть неудобно и ошибочно. В этой статье рассмотрим, как создать удобный пайплайн с выпадающими списками переменных для выбора окружений и других параметров. Также рассмотрим примеры настройки и бонусы для организации общих пайплайнов.

Настройка выпадающих списков переменных

Для начала создадим файл .gitlab-ci.yml в корне вашего проекта и добавим в него следующие настройки:

 1variables:
 2  ENVIRONMENT:
 3    value: "N/A"
 4    options:
 5    - "N/A"
 6    - "STAGE"
 7    - "PRODUCTION"
 8    description: "Deployment environment"
 9
10.stage_server:
11  &stage_server
12    WEB_NODE: "xx.xx.xx.xx"
13    DB_NODE: "xx.xx.xx.xx"
14
15.production_server:
16  &production_server
17    WEB_NODE: "xx.xx.xx.xx"
18    DB_NODE: "xx.xx.xx.xx"
19
20deploy:
21  tags:
22    - common-runner
23  script:
24    - echo $ENVIRONMENT
25    - echo "build & deploy here"
26  rules:
27    - if: '$ENVIRONMENT == "STAGE"'
28      variables:
29          <<: *stage_server
30    - if: '$ENVIRONMENT == "PRODUCTION"'
31      variables:
32          <<: *production_server

Объяснение конфигурации

  1. Переменные окружения:

    • В секции variables описываем переменную ENVIRONMENT с выпадающим списком возможных значений: N/A, STAGE, PRODUCTION.
    • Значение N/A выбрано по умолчанию, чтобы предотвратить случайный запуск пайплайна без выбора окружения.
  2. Описание серверов для окружений:

    • Создаем две секции .stage_server и .production_server, которые содержат информацию о серверах для соответствующих окружений. Здесь можно указать IP-адреса, учетные данные и другие параметры.
  3. Основной job для деплоя:

    • В секции deploy указываем раннер с тегом common-runner и полезную нагрузку (скрипт), который будет выполняться.
    • В секции rules определяется логика выполнения пайплайна в зависимости от выбранного окружения. При выборе STAGE применяются настройки из секции stage_server, а при выборе PRODUCTION — из production_server.

Расширение функционала

Добавление дополнительных переменных

Если нужно добавить еще выпадающие списки или переменные, можно сделать это аналогично. Например, добавим переменную для подтверждения действия:

 1variables:
 2  ENVIRONMENT:
 3    value: "N/A"
 4    options:
 5    - "N/A"
 6    - "STAGE"
 7    - "PRODUCTION"
 8    description: "Deployment environment"
 9  CONFIRM_ACTION:
10    value: "NO"
11    options:
12    - "NO"
13    - "YES"
14    description: "Confirm deployment"
15
16.stage_server:
17  &stage_server
18    WEB_NODE: "xx.xx.xx.xx"
19    DB_NODE: "xx.xx.xx.xx"
20
21.production_server:
22  &production_server
23    WEB_NODE: "xx.xx.xx.xx"
24    DB_NODE: "xx.xx.xx.xx"
25
26deploy:
27  tags:
28    - common-runner
29  script:
30    - echo $ENVIRONMENT
31    - echo $CONFIRM_ACTION
32    - echo "build & deploy here"
33  rules:
34    - if: '$ENVIRONMENT == "STAGE" && $CONFIRM_ACTION == "YES"'
35      variables:
36          <<: *stage_server
37    - if: '$ENVIRONMENT == "PRODUCTION" && $CONFIRM_ACTION == "YES"'
38      variables:
39          <<: *production_server

Теперь, кроме выбора окружения, потребуется подтвердить действие, выбрав YES в переменной CONFIRM_ACTION.

Общие пайплайны для нескольких проектов

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

  1. Создайте репозиторий dev/pipelines и добавьте в него файл .gitlab-ci.yml с необходимыми настройками.
  2. В нужных проектах создайте файл .gitlab-ci.yml со следующим содержимым:
1include:
2  - project: "dev/pipelines"
3    file: ".gitlab-ci.yml"

Этот файл будет включать общие настройки пайплайна из репозитория dev/pipelines.

Заключение

Использование выпадающих списков для переменных в GitLab CI/CD значительно упрощает настройку и запуск пайплайнов. Это позволяет избежать ошибок при вводе значений вручную и делает процесс более удобным. Настройка общих пайплайнов для нескольких проектов также помогает централизовать и упростить управление пайплайнами. Следуя приведенным примерам и рекомендациям, вы сможете настроить эффективные и удобные пайплайны для своих проектов.