首页 > 解决方案 > 通过 UI 设置 Gitlab CI/CD 环境变量

问题描述

我是 gitlab CI/CD 设置的新手。我不想将敏感凭据(如 API 密钥、密码……)放入我的分支。为此,GitLab(和其他 CI/CD 服务)能够设置环境变量。

到目前为止我做了什么:

  1. 通过 UI(项目 ⇒ 设置 ⇒ CI/CD ⇒ 变量)

    首先转到项目⇒设置⇒CI/CD⇒变量并像这样添加它们: 在此处输入图像描述

    现在在这里尝试获取包含所有配置值的文件(例如,使用 dotenv)。

    require("dotenv");
    module.exports = process.env.NODE_ENV.trim() === "production" ? _config.production : _config.development;
    

当前的 .gitlab-ci.yaml 文件是:

image: node:8.9.0

cache:
  paths:
   - node_modules/

stages:
 - ver
 - init
 - test
 - build
 - deploy

 ver:
   stage: ver
   script:
   - node -v

init:
  stage: init-dev
  script:
   - npm install
  tags:
   - dev_server
  only:
   - dev  
  variables:
    ENV_PRODUCTION: "/builds/AkdiD/8/abcde/projectName/ENV_PRODUCTION" 
   
test:
   stage: test
   script:
    - npm test

build:
 stage: build
 script:
  - echo "BUILD_VERSION=production" >> build.env
 artifacts:
   reports:
   dotenv: build.env   

 deploy:
   stage: deploy-dev
   script:
    - npm run killcurrent
    - echo $ENV_PRODUCTION
    - echo $BUILD_VERSION
    - npm run staging
   tags:
    - dev_server
   only:
    - dev

问题:我需要将这个ENV_PRODUCTION文件名(yaml 文件或其他地方)保存在哪里,以便服务器获取该值?

像这样编辑变量 -仍然服务器它不获取这些变量。我应该在 .gitlab-ci.yml 文件中更改/放入一些东西吗?

在此处输入图像描述

标签: node.jsserverdevopsgitlab-cigitlab-ci-runner

解决方案


设置文件类型的自定义环境变量(GItLab 11.11+)似乎不是引用/设置变量列表的方式,包括具有敏感信息的变量。
文件类型的变量通常用于表示例如证书。

您应该定义变量,可能是组级环境变量

您可以定义在管道环境中设置的每个项目或每个组的变量。
组级变量存储在存储库之外(而不是.gitlab-ci.yml),并安全地传递给 GitLab Runner,这使得它们在管道运行期间可用。
对于不使用外部密钥存储或使用 GitLab 与 HashiCorp Vault 集成的高级用户,我们建议使用组环境变量来存储密码、SSH 密钥和凭据等机密。


推荐阅读