微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过UI设置Gitlab CI / CD环境变量

我是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

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。