找不到通过脚本 运行 在 before script 属性中设置一个或多个作业变量的方法

Could not find a way to set the variables of a job or many jobs through script run in a before script attribute

我想将 .sh 文件中的值显示到 .gitlab-ci.yml 但我找不到解决方案。
PS:我不想在.yml文件中使用环境变量

我的 versions.sh 文件如下:

export PROJECT_VERSION = 2.1.25

我的 .gitlab-ci.yml 如下:

before_script:
  - ./versions.sh

my_build_job:
  - script:
    - 'echo "PROJECT_VERSION = $(PROJECT_VERSION)"'

我知道您不想在 .yml 文件中使用环境变量,但是 version.sh 脚本定义了一个变量。

要显示它,语法为:

- 'echo "PROJECT_VERSION = ${PROJECT_VERSION}"'

那是 ${...},而不是 $(...),后者在子 shell 中执行命令。

但是,正如 gitlab-org/gitlab-foss issue 27921 中所讨论的,那是行不通的。

您需要来源您的脚本,as suggested here:

my_build_job:
  - script:
    - source ./versions.sh
    - 'echo "PROJECT_VERSION = $(PROJECT_VERSION)"'