From fdc25dc0d795555cffacc4572648ec158988fbbb Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 26 Jun 2023 12:26:59 +0800 Subject: [PATCH] feat: config merge --- packages/ui/certd-server/.env | 1 - .../ui/certd-server/.env.development.yaml | 2 ++ packages/ui/certd-server/.env.preview.yaml | 2 ++ packages/ui/certd-server/.env.production.yaml | 2 ++ packages/ui/certd-server/Dockerfile | 7 ++--- packages/ui/certd-server/package.json | 1 + .../certd-server/src/config/config.default.ts | 12 +++++---- .../certd-server/src/config/config.preview.ts | 8 +++++- .../src/config/config.production.ts | 11 +++++--- packages/ui/certd-server/src/config/loader.ts | 26 +++++++++++++++++++ .../ui/certd-server/src/middleware/report.ts | 6 +---- 11 files changed, 58 insertions(+), 20 deletions(-) delete mode 100644 packages/ui/certd-server/.env create mode 100644 packages/ui/certd-server/.env.development.yaml create mode 100644 packages/ui/certd-server/.env.preview.yaml create mode 100644 packages/ui/certd-server/.env.production.yaml create mode 100644 packages/ui/certd-server/src/config/loader.ts diff --git a/packages/ui/certd-server/.env b/packages/ui/certd-server/.env deleted file mode 100644 index db7347dc..00000000 --- a/packages/ui/certd-server/.env +++ /dev/null @@ -1 +0,0 @@ -CERTD_AUTH_JWT_KEY=certd666 diff --git a/packages/ui/certd-server/.env.development.yaml b/packages/ui/certd-server/.env.development.yaml new file mode 100644 index 00000000..10b4b96d --- /dev/null +++ b/packages/ui/certd-server/.env.development.yaml @@ -0,0 +1,2 @@ +koa: + port: 7001 diff --git a/packages/ui/certd-server/.env.preview.yaml b/packages/ui/certd-server/.env.preview.yaml new file mode 100644 index 00000000..10b4b96d --- /dev/null +++ b/packages/ui/certd-server/.env.preview.yaml @@ -0,0 +1,2 @@ +koa: + port: 7001 diff --git a/packages/ui/certd-server/.env.production.yaml b/packages/ui/certd-server/.env.production.yaml new file mode 100644 index 00000000..10b4b96d --- /dev/null +++ b/packages/ui/certd-server/.env.production.yaml @@ -0,0 +1,2 @@ +koa: + port: 7001 diff --git a/packages/ui/certd-server/Dockerfile b/packages/ui/certd-server/Dockerfile index 52140734..9a46a782 100644 --- a/packages/ui/certd-server/Dockerfile +++ b/packages/ui/certd-server/Dockerfile @@ -7,9 +7,6 @@ COPY . . #RUN npm install --registry=https://registry.npmmirror.com RUN npm install -g cnpm RUN cnpm install -RUN npm run build:preview +RUN npm run build -# 如果端口更换,这边可以更新一下 -EXPOSE 7001 - -CMD ["npm", "run", "online:preview"] +CMD ["npm", "run", "online"] diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index d7756551..59b14455 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -47,6 +47,7 @@ "dayjs": "^1.11.7", "dotenv": "^16.0.3", "glob": "^7.2.3", + "js-yaml": "^4.1.0", "jsonwebtoken": "^8.5.1", "kubernetes-client": "^9.0.0", "lodash": "^4.17.21", diff --git a/packages/ui/certd-server/src/config/config.default.ts b/packages/ui/certd-server/src/config/config.default.ts index 5d036545..793cda81 100644 --- a/packages/ui/certd-server/src/config/config.default.ts +++ b/packages/ui/certd-server/src/config/config.default.ts @@ -4,13 +4,13 @@ import { FlywayHistory } from 'midway-flyway-js/dist/entity'; import { MidwayConfig } from '@midwayjs/core'; import { UserEntity } from '../modules/authority/entity/user'; import { PipelineEntity } from '../modules/pipeline/entity/pipeline'; -import * as dotenv from 'dotenv'; //import { logger } from '../utils/logger'; // load .env file in process.cwd -dotenv.config(); -export default { +import _ from 'lodash'; +import { load } from './loader'; +const development = { // use for cookie sign key, should change to your own and keep security - keys: process.env.CERTD_AUTH_JWT_KEY, + keys: 'certd666', koa: { port: 7001, }, @@ -68,7 +68,7 @@ export default { biz: { jwt: { - secret: process.env.CERTD_AUTH_JWT_KEYS, + secret: 'certd666', expire: 7 * 24 * 60, //单位秒 }, auth: { @@ -76,3 +76,5 @@ export default { }, }, } as MidwayConfig; +_.merge(development, load('development')); +export default development; diff --git a/packages/ui/certd-server/src/config/config.preview.ts b/packages/ui/certd-server/src/config/config.preview.ts index a47437f7..0b9d2e38 100644 --- a/packages/ui/certd-server/src/config/config.preview.ts +++ b/packages/ui/certd-server/src/config/config.preview.ts @@ -1,6 +1,8 @@ import { MidwayConfig } from '@midwayjs/core'; +import { load } from './loader'; +import _ from 'lodash'; -export default { +const preview = { /** * 演示环境 */ @@ -8,3 +10,7 @@ export default { enabled: true, }, } as MidwayConfig; + +_.merge(preview, load('preview')); + +export default preview; diff --git a/packages/ui/certd-server/src/config/config.production.ts b/packages/ui/certd-server/src/config/config.production.ts index a47437f7..52fa630e 100644 --- a/packages/ui/certd-server/src/config/config.production.ts +++ b/packages/ui/certd-server/src/config/config.production.ts @@ -1,10 +1,15 @@ import { MidwayConfig } from '@midwayjs/core'; - -export default { +import { load } from './loader'; +import _ from 'lodash'; +const production = { /** * 演示环境 */ preview: { - enabled: true, + enabled: false, }, } as MidwayConfig; + +_.merge(production, load('production')); + +export default production; diff --git a/packages/ui/certd-server/src/config/loader.ts b/packages/ui/certd-server/src/config/loader.ts new file mode 100644 index 00000000..68940d6e --- /dev/null +++ b/packages/ui/certd-server/src/config/loader.ts @@ -0,0 +1,26 @@ +import path from 'path'; +import _ from 'lodash'; +const yaml = require('js-yaml'); +const fs = require('fs'); + +function parseEnv() { + const config = {}; + for (const key in process.env) { + let keyName = key; + if (!keyName.startsWith('certd_')) { + continue; + } + keyName = keyName.replace('certd_', ''); + const configKey = keyName.replace('_', '.'); + _.set(config, configKey, process.env[key]); + } + return config; +} + +export function load(env = '') { + // Get document, or throw exception on error + const yamlPath = path.join(process.cwd(), `.env.${env}.yaml`); + const doc = yaml.load(fs.readFileSync(yamlPath, 'utf8')); + _.merge(doc, parseEnv()); + return doc; +} diff --git a/packages/ui/certd-server/src/middleware/report.ts b/packages/ui/certd-server/src/middleware/report.ts index a866150e..f0e10fc2 100644 --- a/packages/ui/certd-server/src/middleware/report.ts +++ b/packages/ui/certd-server/src/middleware/report.ts @@ -1,9 +1,5 @@ import { Provide } from '@midwayjs/decorator'; -import { - IWebMiddleware, - IMidwayKoaContext, - NextFunction, -} from '@midwayjs/koa'; +import { IWebMiddleware, IMidwayKoaContext, NextFunction } from '@midwayjs/koa'; import { logger } from '../utils/logger'; @Provide()