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 工作,看起来像这样:
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 中动态设置全局变量