Введение
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
Объяснение конфигурации
-
Переменные окружения:
- В секции
variables
описываем переменнуюENVIRONMENT
с выпадающим списком возможных значений:N/A
,STAGE
,PRODUCTION
. - Значение
N/A
выбрано по умолчанию, чтобы предотвратить случайный запуск пайплайна без выбора окружения.
- В секции
-
Описание серверов для окружений:
- Создаем две секции
.stage_server
и.production_server
, которые содержат информацию о серверах для соответствующих окружений. Здесь можно указать IP-адреса, учетные данные и другие параметры.
- Создаем две секции
-
Основной 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
.
Общие пайплайны для нескольких проектов
Для организации общего пайплайна, который можно использовать в нескольких проектах, выполните следующие шаги:
- Создайте репозиторий
dev/pipelines
и добавьте в него файл.gitlab-ci.yml
с необходимыми настройками. - В нужных проектах создайте файл
.gitlab-ci.yml
со следующим содержимым:
1include:
2 - project: "dev/pipelines"
3 file: ".gitlab-ci.yml"
Этот файл будет включать общие настройки пайплайна из репозитория dev/pipelines
.
Заключение
Использование выпадающих списков для переменных в GitLab CI/CD значительно упрощает настройку и запуск пайплайнов. Это позволяет избежать ошибок при вводе значений вручную и делает процесс более удобным. Настройка общих пайплайнов для нескольких проектов также помогает централизовать и упростить управление пайплайнами. Следуя приведенным примерам и рекомендациям, вы сможете настроить эффективные и удобные пайплайны для своих проектов.