Я работаю над настройкой бегуна gitlab для нескольких проектов, и мы хотим иметь возможность настраивать переменные среды для всех проектов. Я попытался установить глобальные переменные в .bashrc
для пользователей gitlab-runner
и root
, но он не распознал их во время сценария CI. Как правильно объявлять глобальные переменные среды?
Глобальные переменные среды для gitlab CI runner
Ответы (6)
Вы также можете вводить переменные среды в свой gitlab-runner прямо в командной строке, как указано в gitlab-runner exec docker --help
:
ОПЦИИ: .. --env значение Пользовательские переменные среды, введенные в среду сборки [$ RUNNER_ENV] ..
Вот небольшой пример того, как я использую его в скрипте:
При необходимости измените объявления:
declare jobname="your_jobname"
declare runnerdir="/path/to/your/repository"
Получите файл env в массив bash.
[ -f "$runnerdir/env" ] \
&& declare -a envlines=($(cat "$runnerdir/env"))
declare -a envs=()
for env in "${envlines[@]}"; do
envs+=(--env "$env")
done
И, наконец, передайте его gitlab-runner.
[ -d "$runnerdir" ] && cd "$runnerdir" \
&& gitlab-runner exec docker "${envs[@]}" $jobname \
&& cd -
Вы можете определить переменные среды для внедрения в config.toml
файл бегуна. См. документацию по расширенной конфигурации runner в разделе [[runners]]
.
Кажется, нет способа указать переменные среды в пользовательском интерфейсе GitLab только для определенного бегуна.
С помощью GitLab 13.1 (Июнь 2020 г.), теперь у вас есть:
Instance-level CI/CD variables
GitLab теперь поддерживает переменные уровня экземпляра.
Благодаря этой возможности устанавливать глобальные переменные вам больше не нужно вручную вводить одни и те же учетные данные повторно для всех ваших проектов.Этот MVC предоставляет доступ к этой функции через API, и следующая итерация этой функции предоставит возможность настраивать переменные уровня экземпляра непосредственно в пользовательском интерфейсе.
См. документацию и issue.
Я добавил export MY_VAR="FOO"
в .bashrc
gitlab-runner
, и он работает.
echo export MY_VAR=\"FOO\" >> /home/gitlab-runner/.bashrc
Проверьте, какой тип исполнителя вы используете? (shell, kubernetes, docker-ssh, параллели ...) Я использую shell-исполнитель.
Проверьте, какой тип оболочки используется gitlab-runner
? (Как определить текущую оболочку, над которой я работаю) И отредактируйте подходящий rc
файл для этого.
Проверьте пользователя Gitlab CI Runner.
Я предлагаю выгрузить все переменные среды для дальнейшей отладки, добавив env
в сценарий .gitlab-ci.yml
:
#.gitlab-ci.yml
job:
script: env
Вы можете легко настроить переменные в настройках GitLab:
Переменные уровня проекта можно добавить, перейдя в «Настройки» проекта> CI / CD, затем найдя раздел «Переменные».
Чтобы убедиться, что ваши переменные используются только в
См. https://docs.gitlab.com/ee/ci/variables/#variables