7

我在以下位置有一个虚拟构建脚本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

我不认为将整个脚本编写为单行脚本是一个好主意/做法。

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

附言

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

No such file or directory

并且在这个地方构建失败

4

2 回答 2

8

Gitlab CI 只是播放 shell 命令,所以在 *sh 中执行你所做的:

export ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"
于 2016-12-02T11:58:21.810 回答
1

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

PWD=$PWD 使

Makefile 以 a 开头:export GOPATH=$(PWD)

于 2013-11-28T14:23:48.670 回答