在gitlab-ci.yml脚本中设置环境变量

问题描述 投票:0回答:1

我正在将下面的 GitHub Action 脚本转换为 GitLab CI 脚本。

从 GitHub 文档中,我了解到下面的行设置了环境变量的值 - 但我找不到任何用于在 GitLab 中设置环境变量的资源。

run: >
     DISPLAY=:0 xvfb-run -s '-screen 0 1024x768x24' julia --project=monorepo -e 'using Pkg; Pkg.test("GLMakie", coverage=true)'
     && echo "TESTS_SUCCESSFUL=true" >> $GITHUB_ENV 
gitlab-ci
1个回答
16
投票

设置环境变量的方法有多种,这取决于你想要实现的目的:

  1. 在同一个工作中使用它
  2. 在其他工作中使用它

在同一个工作中使用它

在 Bash 或其他 Shell 中,您可以通过

export
设置环境变量 - 在您的情况下,它看起来像:

job:
  script:
    - DISPLAY=:0 xvfb-run -s '-screen 0 1024x768x24' julia --project=monorepo -e 'using Pkg; Pkg.test("GLMakie", coverage=true)' && export TESTS_SUCCESSFUL=true
    - echo $TESTS_SUCCESSFUL #verification that it is set and can be used within the same job

在其他工作中使用它

要将变量移交给另一个作业,您需要定义一个

artifact:report:dotenv
。它是一个文件,其中可以包含键值对列表,这些键值对将在后续作业中作为环境变量注入。

文件的结构如下所示:

KEY1=VALUE1
KEY2=VALUE2

.gitlab-ci.yml
中的定义看起来像

job:
  # ...
  artifacts:
    reports:
      dotenv: <path to file>

在你的情况下,这看起来像


job:
  script:
    - DISPLAY=:0 xvfb-run -s '-screen 0 1024x768x24' julia --project=monorepo -e 'using Pkg; Pkg.test("GLMakie", coverage=true)' && echo "TESTS_SUCCESSFUL=true" >> build.env
  artifacts:
    reports:
      dotenv: build.env

job2:
  needs: ["job"]
  script:
    - echo $TESTS_SUCCESSFUL

请参阅 https://docs.gitlab.com/ee/ci/variables/#pass-an-environment-variable-to-another-job了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.