通过UI设置Gitlab CI / CD环境变量

时间:2020-08-29 16:09:15

标签: node.js server devops gitlab-ci gitlab-ci-runner

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

到目前为止我所做的:

  1. 通过用户界面(项目⇒设置⇒CI / CD⇒变量)

    首先转到项目⇒设置⇒CI / CD⇒变量并像这样添加它们: enter image description here

    现在在这里尝试获取具有所有配置值的文件(例如,使用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文件中的内容吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

设置Custom environment variables of type File(GItLab 11.11+)似乎不是引用/设置变量列表的方法,包括具有敏感信息的变量。
通常会使用文件类型的变量来表示例如证书。

您应该定义变量,可能是Group-level environment variables

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