如何在 Gitlab CI 中设置环境变量并使其在本地可测试
Posted
技术标签:
【中文标题】如何在 Gitlab CI 中设置环境变量并使其在本地可测试【英文标题】:How to setup environment variable in Gitlab CI and make it testable in local 【发布时间】:2022-01-16 15:04:30 【问题描述】:当前项目结构:
…
-src
-.env.development
-.env.uat
-.env.production
-webpack
-webpack.base.js
-webpack.dev.js
-webpack.uat.js
-webpack.prod.js
在webpack中,我设置new Dotenv( path: "./.env.development" )
为开发环境等
webpack.dev.js
const merge = require("webpack-merge");
const base = require("./webpack.base");
const Dotenv = require("dotenv-webpack");
module.exports = merge(base,
mode: "development",
output: ...,
devServer: ...,
plugins: [new Dotenv( path: "./.env.development" )],
);
webpack.uat.js
const merge = require("webpack-merge");
const base = require("./webpack.base");
const Dotenv = require("dotenv-webpack");
module.exports = merge(base,
mode: "production",
output: ...,
module: ...,
plugins: [
new Dotenv( path: "./.env.uat" ),
...
],
);
webpack.prod.js
const merge = require("webpack-merge");
const base = require("./webpack.base");
const Dotenv = require("dotenv-webpack");
module.exports = merge(base,
mode: "production",
output: ...,
module: ...,
plugins: [
new Dotenv( path: "./.env.prod” ),
...
],
);
package.json
"scripts":
"build:uat": "cross-env NODE_ENV=uat webpack --config ./webpack/webpack.uat.js",
"build": "webpack --config ./webpack/webpack.prod.js",
,
我打算使用 Gitlab CI 和 CI/CD,所以我正在考虑如何处理 .env 变量。
我在 gitlab Settings > CI/CD > Variables
中添加了环境变量。
添加后,我不知道如何进行下一步。
另外,如何测试gitlab中是否设置了环境变量?
【问题讨论】:
【参考方案1】:查看 Gitlab CI/CD 文档。他们相当不错:https://docs.gitlab.com/ee/ci/variables/
您可以通过多种不同的方式定义变量,例如通过项目的门户网站或在 .gitlab-ci.yml 文件中。无论您在哪里定义它们,访问 .gitlab-ci.yml 文件中的值都是相同的:
test_variable:
stage: test
script:
- echo "$MY_AWESOME_VAR"
$MY_AWESOME_VAR
是您创建的变量的名称,前面带有 $。
Gitlab 还创建了一系列与 CI/CD 流程相关的标准环境变量,您也可以将它们绑定到其中。 https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
这些对于很多不同的事情都很方便。例如,在我正在处理的项目中,我保存构建工件并使用 $CI_ENVIRONMENT_NAME-$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
的串联命名生成的工件
【讨论】:
以上是关于如何在 Gitlab CI 中设置环境变量并使其在本地可测试的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JAVA_OPTS 在 gitlab-ci.yaml 中设置 Gradle 代理变量
Gitlab CI/CD 中设置 Python 虚拟环境的最佳实践是啥