我正在为多个项目设置一个gitlab运行器,我们希望能够为所有项目设置环境变量。我尝试在.bashrc
和gitlab-runner
用户的root
中设置全局变量,但在CI脚本中却无法识别它们。声明全局环境变量的正确位置是什么?
答案 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)
答案 3 :(得分:0)
您可以在GitLab设置中轻松设置变量:
可以通过转到项目的“设置”>“ CI / CD”,然后找到“变量”部分来添加项目级变量。
确保您的变量仅在
中使用答案 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-runner
添加到env
的脚本中来转储所有环境变量以进行进一步调试:
.gitlab-ci.yml