如何在 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 虚拟环境的最佳实践是啥

如何在 Google App Engine 中设置环境变量/应用程序机密

在mac中设置ANDROID_HOME环境变量

Gitlab Ci中自动生成版本号

如何将值传递给 Gitlab CI 作业