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

标签 gitlab gitlab-ci gitlab-ci-runner

我有以下内容

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 具有相同的值 code> 用于所有阶段。

最佳答案

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

关于gitlab - 使用 $CI_JOB_ID 作为 Gitlab 管道多个阶段的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71682819/

相关文章:

git - 如何在 merge 请求中删除其他人的提交

git - 如何从终端或命令行创建 gitlab 项目

gitlab - 使用Gitlab Pipeline将数据推送到ftpserver

Gitlab Ci 部署在多台服务器上

docker - Docker上的GitLab-如何为GitLab设置外部URL

git - 使用 git 更新共享 fork 存储库

electron - 在 Gitlab CI 上运行测试时 ChromeDriver 出现问题

Gitlab CI runner 没有构建或显示任何输出

bash - 如何在 bash 中捕获 gitlab-runner 的输出

git - 如何在本地删除已在线删除的git远程分支?