我是gitlab CI / CD设置的新手。我不想将敏感的凭据(例如API密钥,密码...)放入我的分支中。为此,GitLab(和其他CI / CD-Services)能够设置环境变量。
到目前为止我所做的:
通过用户界面(项目⇒设置⇒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文件中的内容吗?
答案 0 :(得分:1)
设置Custom environment variables of type File(GItLab 11.11+)似乎不是引用/设置变量列表的方法,包括具有敏感信息的变量。
通常会使用文件类型的变量来表示例如证书。
您应该定义变量,可能是Group-level environment variables
您可以定义在管道环境中设置的每个项目或每个组的变量。
组级变量存储在存储库之外(不在.gitlab-ci.yml
中),并安全地传递到GitLab Runner,这使它们在管道运行期间可用。
对于不使用外部密钥存储或使用GitLab与HashiCorp Vault集成的高级用户,我们建议使用组环境变量来存储密码,SSH密钥和凭据之类的机密。