gitlab-ci - 在脚本中的 gitlab-ci.yml 中设置环境变量
问题描述
请帮助我将以下书面 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
解决方案
设置环境变量有多种方法,这取决于您要实现的目标:
- 在同一个工作中使用它
- 在另一份工作中使用它
在同一个工作中使用它
在 Bash 或其他 Shells 中,您可以通过设置环境变量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。
推荐阅读
- spring-batch - 在spring-batch中动态读取文件
- maven - 如何仅部署多模块 Maven 项目的一部分?
- python - 为什么我的网站的下半部分没有显示?
- vba - VBA用用户表单文本框和组合框替换Outlook html模板中的所有占位符
- firebase - 如何使用 Cloud Firestore 存储只有他们可以读取、写入和删除的私有用户数据?
- python-3.x - 无法使用 python 3.8 构建 opencv-python
- php - 在 CodeIgniter 中使用多个条件更新多行的问题
- wordpress - 使用 GraphQL(WPGraphQL for Wordpress)高效获取与产品相关的产品类别
- c# - 从另一种方法检索时,一种方法中设置的属性返回 null
- excel - 0 的 Excel 条件格式