Глобальные переменные среды для gitlab CI runner

Я работаю над настройкой бегуна gitlab для нескольких проектов, и мы хотим иметь возможность настраивать переменные среды для всех проектов. Я попытался установить глобальные переменные в .bashrc для пользователей gitlab-runner и root, но он не распознал их во время сценария CI. Как правильно объявлять глобальные переменные среды?


person TristanV    schedule 24.05.2017    source источник
comment
Та же проблема: бегуны бегают на разных машинах, которые немного отличаются. (Скажем, какой-то путь) Я хочу использовать разные переменные среды для каждого бегуна.   -  person betontalpfa    schedule 22.04.2020


Ответы (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 -
person Dominik Kummer    schedule 19.02.2019

Вы можете определить переменные среды для внедрения в config.toml файл бегуна. См. документацию по расширенной конфигурации runner в разделе [[runners]].

Кажется, нет способа указать переменные среды в пользовательском интерфейсе GitLab только для определенного бегуна.

person DarkDust    schedule 09.11.2018

С помощью GitLab 13.1 (Июнь 2020 г.), теперь у вас есть:

Instance-level CI/CD variables

GitLab теперь поддерживает переменные уровня экземпляра.
Благодаря этой возможности устанавливать глобальные переменные вам больше не нужно вручную вводить одни и те же учетные данные повторно для всех ваших проектов.

Этот MVC предоставляет доступ к этой функции через API, и следующая итерация этой функции предоставит возможность настраивать переменные уровня экземпляра непосредственно в пользовательском интерфейсе.

См. документацию и issue.

person VonC    schedule 23.06.2020

Рассмотрите возможность использования внешнего постоянного хранилища секретов, например Vault или Keywhiz

Отказ от ответственности: я не связан и не использую какие-либо из вышеперечисленных услуг

person elingerojo    schedule 25.05.2017

Я добавил 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
person betontalpfa    schedule 22.04.2020

Вы можете легко настроить переменные в настройках GitLab:

Переменные уровня проекта можно добавить, перейдя в «Настройки» проекта> CI / CD, затем найдя раздел «Переменные».

Чтобы убедиться, что ваши переменные используются только в

См. https://docs.gitlab.com/ee/ci/variables/#variables

person Michael Schober    schedule 23.07.2018