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

Man*_*dia 11 gitlab-ci

请帮助我将下面编写的 GitHub Action 转换为 Gitlab CI 脚本。我是 Gitlab 脚本新手。

从 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 
Run Code Online (Sandbox Code Playgroud)

Sim*_*ner 12

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

  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

Run Code Online (Sandbox Code Playgroud)

在另一个工作中使用它

要将变量移交给另一个作业,您需要定义一个artifact:report:dotenv. 它是一个包含键值对列表的文件,这些键值对将在后续作业中作为环境变量注入。

该文件的结构如下所示:

KEY1=VALUE1
KEY2=VALUE2
Run Code Online (Sandbox Code Playgroud)

和定义看起来.gitlab-ci.yml

KEY1=VALUE1
KEY2=VALUE2
Run Code Online (Sandbox Code Playgroud)

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

job:
  # ...
  artifacts:
    reports:
      dotenv: <path to file>
Run Code Online (Sandbox Code Playgroud)

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

  • 只是一个脚注:使用“dotenv”工件创建的变量可以在另一个作业的“脚本”中使用。这些值不可在“变量”和“规则”部分等其他地方使用。 (6认同)