node.js - 通过 UI 设置 Gitlab CI/CD 环境变量
问题描述
我是 gitlab CI/CD 设置的新手。我不想将敏感凭据(如 API 密钥、密码……)放入我的分支。为此,GitLab(和其他 CI/CD 服务)能够设置环境变量。
到目前为止我做了什么:
通过 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 文件中更改/放入一些东西吗?
解决方案
设置文件类型的自定义环境变量(GItLab 11.11+)似乎不是引用/设置变量列表的方式,包括具有敏感信息的变量。
文件类型的变量通常用于表示例如证书。
您应该定义变量,可能是组级环境变量
您可以定义在管道环境中设置的每个项目或每个组的变量。
组级变量存储在存储库之外(而不是.gitlab-ci.yml
),并安全地传递给 GitLab Runner,这使得它们在管道运行期间可用。
对于不使用外部密钥存储或使用 GitLab 与 HashiCorp Vault 集成的高级用户,我们建议使用组环境变量来存储密码、SSH 密钥和凭据等机密。
推荐阅读
- javascript - 在 HTML 中查找和替换文本不执行任何操作
- ios - 避免将图像存储在临时文件夹iOS swift中
- javascript - TypeError:无法读取未定义的属性(正在读取“getBoundingClientRect”)
- c# - Xamarin.Forms:处理导航工具栏按钮(Shell)
- vue.js - 在不同的地方使用相同的 Vue 变量会出错
- c# - 如何在不重复枚举名称的情况下使用枚举?
- flutter - 哎呀;颤振意外退出:“第 8 行第 2 列错误:预期为 ':'
- mysql - 无法读取未定义的属性“connectionConfig”
- postgresql - Docker 和 Postgres - 使用 5432 以外的端口时服务器意外关闭连接错误
- reactjs - Dockerfile 卡在 Jenkins 的 npm install 上