【问题标题】:How to set an (environment) variable in the build script in Gitlab CI?如何在 Gitlab CI 的构建脚本中设置(环境)变量?
【发布时间】:2013-10-14 12:06:27
【问题描述】:

我在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

在这个地方构建失败

【问题讨论】:

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

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    PWD=$PWD 品牌

    Makefile 以: 导出 GOPATH=$(PWD)

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 1970-01-01
      • 2022-11-02
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多