使用 $CI_JOB_ID 作为跨 Gitlab 流水线多个阶段的常量
Use $CI_JOB_ID as a constant across multiple stages of Gitlab pipeline
我有以下
stages:
- stage1
- stage2
variables:
MY_ENV_VAR: env_$CI_JOB_ID
stage1_build:
stage: stage1
script:
- echo $MY_ENV_VAR
stage2_build:
stage: stage2
script:
- echo $MY_ENV_VAR
我在两个阶段得到不同的 $MY_ENV_VAR
值(这意味着 $CI_JOB_ID
在每个阶段都有变化)。
我想要的是用 $CI_JOB_ID
的一个值设置一次 $MY_ENV_VAR
并使其成为一个常数,以便在所有阶段使用相同的 $MY_ENV_VAR
值。
使用 $CI_PIPELINE_ID
instaed,这将在管道中的所有作业中保持不变。
variables:
MY_ENV_VAR: env_$CI_PIPELINE_ID
有关其他参考,请参阅 predefined environment variables。
如果您确实希望在一个作业中创建一个环境变量并在管道的其余部分持续存在,您可以使用 artifacts:reports:dotenv
.
在作业之间传递变量
stages:
- stage1
- stage2
set_env:
stage: .pre
script:
echo "MY_ENV_VAR=env_$CI_JOB_ID" > .myenv
artifacts:
reports:
dotenv: .myenv
stage1_build:
stage: stage1
script:
- echo $MY_ENV_VAR
stage2_build:
stage: stage2
script:
- echo $MY_ENV_VAR
我有以下
stages:
- stage1
- stage2
variables:
MY_ENV_VAR: env_$CI_JOB_ID
stage1_build:
stage: stage1
script:
- echo $MY_ENV_VAR
stage2_build:
stage: stage2
script:
- echo $MY_ENV_VAR
我在两个阶段得到不同的 $MY_ENV_VAR
值(这意味着 $CI_JOB_ID
在每个阶段都有变化)。
我想要的是用 $CI_JOB_ID
的一个值设置一次 $MY_ENV_VAR
并使其成为一个常数,以便在所有阶段使用相同的 $MY_ENV_VAR
值。
使用 $CI_PIPELINE_ID
instaed,这将在管道中的所有作业中保持不变。
variables:
MY_ENV_VAR: env_$CI_PIPELINE_ID
有关其他参考,请参阅 predefined environment variables。
如果您确实希望在一个作业中创建一个环境变量并在管道的其余部分持续存在,您可以使用 artifacts:reports:dotenv
.
stages:
- stage1
- stage2
set_env:
stage: .pre
script:
echo "MY_ENV_VAR=env_$CI_JOB_ID" > .myenv
artifacts:
reports:
dotenv: .myenv
stage1_build:
stage: stage1
script:
- echo $MY_ENV_VAR
stage2_build:
stage: stage2
script:
- echo $MY_ENV_VAR