Как настроить переменные env в gitlab-ci.yaml?

#continuous-integration #gitlab #devops #continuous-deployment #gitlab-ci-runner

#непрерывная интеграция #gitlab #devops #непрерывное развертывание #gitlab-ci-runner

Вопрос:

Мой конфигурационный файл gitlab ci-cd использует множество переменных env. Для их установки я использую секретные переменные gitlab ci-cd.

Например, часть развертывания разработки:

 - echo "====== Deploy to dev server ======"
# Add target server`s secret key
- apk add git openssh bash
- mkdir ~/.ssh
- echo $DEV_SERVER_SECRET_KEY_BASE_64 | base64 -d > ~/.ssh/id_rsa
- chmod 700 ~/.ssh amp;amp; chmod 600 ~/.ssh/*
- echo "Test ssh connection for"
- echo "$DEV_SERVER_USER@$DEV_SERVER_HOST"
- ssh -o StrictHostKeyChecking=no -T "$DEV_SERVER_USER@$DEV_SERVER_HOST"
# Delploy
- echo "Setup target server directories"
- TARGET_SERVER_HOST=$DEV_SERVER_HOST TARGET_SERVER_USER=$DEV_SERVER_USER TARGET_SERVER_APP_FOLDER=$DEV_SERVER_APP_FOLDER pm2 deploy pm2.config.js dev setup 2>amp;1 || true
- echo "make deploy"
- TARGET_SERVER_HOST=$DEV_SERVER_HOST TARGET_SERVER_USER=$DEV_SERVER_USER TARGET_SERVER_APP_FOLDER=$DEV_SERVER_APP_FOLDER pm2 deploy pm2.config.js dev
  

У меня есть 5 репозиториев в проекте и 3 сервера (dev, preprod, prod). Итак, я должен управлять многими переменными. Управлять всеми ними, используя секретные переменные gitlab ci-cd, это очень больно. Я не вижу этого, измените это — только удалите и создайте. Я согласен использовать его для секретных ключей ssh, но он не подходит для указания имен папок, хостов и т.д.

Есть ли какой-либо другой способ предоставить переменные скрипту ci-cd?

Комментарии:

1. Вы нашли способ передать GitLab ENV в скрипты (через process.env или каким-либо другим методом)?

Ответ №1:

Вы можете определять пользовательские переменные несколькими способами:

I. использование графического интерфейса:

с использованием файла .gitlab-ci.yml II.:

Вы можете использовать ключевое слово variables в задании или на верхнем уровне файла .gitlab-ci.yml. Если переменная находится на верхнем уровне, она доступна глобально и все задания могут ее использовать. Если это определено в задании, только это задание может его использовать.

 variables:
  TEST_VAR: "All jobs can use this variable's value"

job1:
  variables:
    TEST_VAR_JOB: "Only job1 can use this variable's value"
  script:
    - echo "$TEST_VAR" and "$TEST_VAR_JOB"
  

Убедитесь, что в вашем файле .gitlab-ci.yaml хранятся только нечувствительные переменные

Проверьте официальную документацию для получения дополнительной информации и примеров.