首页 > 解决方案 > 如何将预定义的 json 环境变量传递给 gitlab 作业?

问题描述

我不知道如何将 json 文件中的一些环境变量传递给 Gitlab CI,特别是我与 cypress.io 一起使用的那个。

Gitlab CI 当然有一个部分,您可以在其中以变量或文件的形式指定环境变量。

在此处输入图像描述

然而,Gitlab CI 抱怨“变量键只能包含字母、数字和'_'”。

所以,我想到的事情:

  1. 通过使用覆盖 cypress 使用的 env 文件,--env然后指定一个文件,如
# cypress-env
{
  "username": "xxxx",
  "password": "xxxx"
}
  1. 创建此答案中指定的文件https://stackoverflow.com/a/55581164/5597960

  2. 要求 Cypress.io 团队提供有关如何执行此操作的示例(他们出色的文档没有类似的示例)。

  3. 研究更多关于在 Gitlab CI 中指定文件变量的信息。Gitlab 产生的错误有些奇怪。为什么他们不允许文件变量中的点?我一定做错了什么。

标签: gitlabgitlab-cicypress

解决方案


请按照以下步骤操作:

  1. 按照 gitlab-ci 要求的语法创建具有键名的环境变量。例如,命名它json_variables

Key:必须是一行,不能有空格,只能使用字母、数字或_。

在此处输入图像描述

  1. 在 Gitlab-ci 作业中,将 的内容复制json_variables到一个名为cypress.env.json
stages: 
  - build

development: 
  stage: build
  when: manual 
  script:
    - cp $json_variables ~/cypress.env.json
    - cat ~/cypress.env.json
  environment: development
  only:
    - dev

为了验证,输出cat

在此处输入图像描述


推荐阅读