如何在Gitlab CI中的构建脚本中设置(环境)变量?

时间:2013-10-14 12:06:28

标签: bash build continuous-integration environment-variables gitlab

我在Gitlab CI

中有一个虚拟构建脚本
pwd
ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"

我在系统启动构建过程时得到此输出:

pwd
/home/kai/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1

ci_app_path=$(pwd)

echo "INFO: current directory: $ci_app_path"
INFO: current directory:

因此未设置变量(或仅为该行设置:因为我知道每行单独执行)

我听说推送/弹出机制可以达到我想要的功能,但找不到任何细节,如何实现。

更新

正如我所想,每一行都是分别执行的。因此,变量范围只有一行,其中定义了它:

脚本:

pwd
ci_app_path=$(pwd) && echo "INFO: current directory: $ci_app_path"

输出:

pwd
/home/devuser/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1

ci_app_path=$(pwd) && echo "INFO: current directory: $ci_app_path"
INFO: current directory: /home/kai/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1

我不认为将整个剧本写成一个单行是一个好主意/实践。

如何在执行构建脚本时设置变量?

P.S。

实际上我想知道为什么整个构建脚本必须不包含空行?否则返回:

No such file or directory

并且这个地方的构建失败

2 个答案:

答案 0 :(得分:7)

Gitlab CI只播放shell命令,所以你可以在* sh:

中做
export ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"

答案 1 :(得分:1)

当Gitlab-CI人员修复它时,您可以创建一个Makefile并在其中导出变量,并在Gitlab-CI中传递变量,例如

PWD = $ PWD make

Makefile以: export GOPATH = $(PWD)