用于将变量传递到 gitlab-ci 中作业的其他部分的 $GITLAB_ENV 为空/未定义

问题描述 投票:0回答:1

Gitlab CI 文档建议使用名为

$GITLAB_ENV
的变量将变量从脚本传递到其他部分https://docs.gitlab.com/ee/ci/variables/#pass-an-environment-variable-from-the-script -同一工作中的一个部分到另一个部分

运行管道会抛出错误并显示

echo "<content>" >> $GITLAB_ENV
,表示重定向不明确并终止。该变量在运行时没有值。寻找
$GITLAB_ENV
仅在本文档中提到,未出现在 Gitlab 变量中。

我已经寻找了更多示例来定义变量,如文档所述,但没有更多资源。

有一种方法可以完成这项工作,我需要使用脚本部分中生成的变量值,即要包含在工件中的文件名值:

my-job:
  script:
  - MAIN_DIR=$[[ inputs.root-name ]]-api
  - echo "MAIN_DIR=$MAIN_DIR" >> $GITLAB_ENV

  artifacts:
    paths:
    - $MAIN_DIR/file.txt
gitlab gitlab-ci.yml
1个回答
0
投票

我有一份 gitlab 工作,看起来像这样:

Example:
  stage: example
  script: 
    - touch job.env
    - echo "MAIN_DIR=${MAIN_DIR}" > job.env
  artifacts:
    paths:
      - job.env
    reports:
      dotenv: job.env

我相信将环境变量作为工件传递到其他阶段的标准方法是使用

dotenv

如果您只想在同一作业中访问变量,我只需使用全局变量,例如:

variables:
    MAIN_DIR: "value"

Example:
  stage: example
  script: 
    - echo "$MAIN_DIR"

这篇文章也回答了类似的问题,可能更接近您想要的:在 gitlab-ci 中动态设置全局变量

© www.soinside.com 2019 - 2024. All rights reserved.