使用 $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