gitlab CI runner

时间:2017-05-24 21:58:47

标签: gitlab-ci gitlab-ci-runner

我正在为多个项目设置一个gitlab运行器,我们希望能够为所有项目设置环境变量。我尝试在.bashrcgitlab-runner用户的root中设置全局变量,但在CI脚本中却无法识别它们。声明全局环境变量的正确位置是什么?

6 个答案:

答案 0 :(得分:1)

您可以定义环境变量以注入跑步者的config.toml文件中。请参阅[[runners]]部分中的advanced runner configuration documentation

似乎没有一种方法可以在GitLab UI中仅为特定跑步者指定环境变量。

答案 1 :(得分:1)

有了GitLab 13.1 (June 2020),您现在拥有:

实例级CI / CD变量

GitLab现在支持实例级变量。
具有设置全局变量的功能,您不再需要为所有项目重复手动输入相同的凭据

此MVC引入了通过API对该功能的访问权限,此功能的下一次迭代将提供直接在UI中配置实例级变量的功能。

请参见Documentation[issue][3]

答案 2 :(得分:0)

考虑使用外部持久性秘密存储服务,例如VaultKeywhiz

免责声明:我没有关联或使用上述任何服务

答案 3 :(得分:0)

您可以在GitLab设置中轻松设置变量:

  

可以通过转到项目的“设置”>“ CI / CD”,然后找到“变量”部分来添加项目级变量。

确保您的变量仅在

中使用

请参阅: https://docs.gitlab.com/ee/ci/variables/#variables

答案 4 :(得分:0)

您也可以直接在命令行中将环境变量注入gitlab-runner,如gitlab-runner exec docker --help所述:

  

选项:..   --env value注入自定义环境变量以构建环境[$ 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 -

答案 5 :(得分:0)

我已将export MY_VAR="FOO"添加到gitlab-runner的{​​{1}},并且可以使用。

.bashrc

检查您使用哪种类型的执行器? (shell,kubernetes,docker-ssh,并行...)。我使用shell执行器。

检查echo export MY_VAR=\"FOO\" >> /home/gitlab-runner/.bashrc 使用哪种类型的外壳? (How to determine the current shell I'm working on)并为此编辑proper rc file

检查Gitlab CI Runner user


我建议通过将gitlab-runner添加到env的脚本中来转储所有环境变量以进行进一步调试:

.gitlab-ci.yml