代码之家  ›  专栏  ›  技术社区  ›  ontherocks

在Gitlab管道的多个阶段中使用$CI_JOB_ID作为常量

  •  0
  • ontherocks  · 技术社区  · 4 年前

    我有以下几点

    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 每个阶段的变化)。

    我想要的是设定 $MY_ENV_VAR 一次一个值 $CI_JOB_ID 使其为常数,使 $MY_ENV_VAR 用于所有阶段。

    1 回复  |  直到 4 年前
        1
  •  1
  •   sytech    4 年前

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