Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在Gitlab CI的构建脚本中设置(环境)变量?_Bash_Build_Continuous Integration_Environment Variables_Gitlab - Fatal编程技术网

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

Bash 如何在Gitlab CI的构建脚本中设置(环境)变量?,bash,build,continuous-integration,environment-variables,gitlab,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:

我在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:
所以变量没有设置(或者只为该行设置:据我所知,每一行都是单独执行的)

我听说push/pop机制可以达到我想要的功能,但找不到任何细节,如何实现

更新: 正如我所想,每一行都将分别执行。因此,变量范围只有一行,定义如下:

脚本:

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
我不认为把整个剧本写成一行是个好主意/做法

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

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

No such file or directory

而构建在这个地方失败了

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

PWD=$PWD制造

Makefile以一个:
export GOPATH=$(PWD)

Gitlab CI只播放shell命令,所以执行在*sh中执行的操作:

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

我不熟悉
gitlab
,但这与
make
面临的问题相同(也许这就是
gitlab ci
使用的问题?)。使用
make
,其思想是,如果有那么多行,应该将它们保存到外部脚本中,并让
make
执行它。
Makefile
不是shell脚本,不应将其视为shell脚本
gitlab ci
可能采用相同的方法。