跳至正文
Wener Notes

ENV

约 2 分钟阅读

环境变量

  • 运行环境 - 分支可能对应了运行环境
    • 开发环境
    • 测试环境
    • 预发布环境
    • 生产环境
    • 性能测试环境
  • 运行模式
    • production
    • development
    • test
  • env - 环境
  • profile - 配置文件/配置轮廓
    • --spring.profiles.active
  • envrionment variable - 环境变量
abbr.forcn
staging预发布
devdevelopment开发
prodproduction生产
testtest/testing测试
perfperformance性能测试
benchbenchmark基准测试
sitSystem Integration Testing系统集成测试, 由公司
uatUser Acceptance Testing用户验收测试, 由用户
next下一个版本
alpha内部测试
beta公测
gageneral availability正式发布
rcrelease candidate发布候选版本
crcode review代码审查
stable稳定版本
EAPEarly Access Program早期访问计划
  • 开发->测试->上线
  • SIT -> UAT
  • 面向生命周期
    • 开发、测试、预发布、生产、性能测试
    • dev/test/staging/prod/perf
    • local/development/staging/production/testing
    • dev/test/staging/prod
    • development/test/stage/produciton
    • 预发布 - staging/pre/next
    • 性能测试 - performance/perf/benchmark/bench
  • 面向环境
    • region
    • zone

vars

  • NO_COLOR - 关闭彩色输出
  • DNT - Do Not Track - 关闭 Telemetry

FAQ

静态前端配置

加载 Bootstrap 配置 - 例如 API 地址

  1. 构建时根据 branch 加载配置
TypeScript
import { defineConfig, loadEnv, type PluginOption } from 'vite';
export default defineConfig(({ mode, command }) => {
  const env = {};
  console.log(`Vite ${command} mode=${mode} branch=${process.env.CI_COMMIT_BRANCH || ''}`);
  Object.assign(env, loadEnv(mode, process.cwd(), ''));

  // 加载 .env.branch 覆盖
  if (process.env.CI_COMMIT_BRANCH) {
    Object.assign(env, loadEnv(process.env.CI_COMMIT_BRANCH, process.cwd(), ''));
  }
  process.env = Object.assign(process.env, env);

  return defineConfig({});
});
  1. 部署时通过覆盖 json 配置
  • 请求 ${location.origin}/config.json 获取配置
    • 允许配置不存在
    • 部署时可以将 /config.json 重定向
    • 部署时可以将 /app/public/config.json 内容进行替换
  1. 在前端配置所有 domain -> config 的配置,根据当前域名加载配置
  2. 基于 当前域名 按照规则生成 api 地址
  3. 回滚到 ${location.origin}/api 作为默认 API 地址
  4. 通过请求 API 获取配置
  • SaaS 场景
  • 允许用户输入租户 ID/名字
  • 服务端判断 referer/url 判断返回的配置信息

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

GitHub2 条
其他外链6 条
最近更新commit 18c892b编辑