4 Commits

Author SHA1 Message Date
湛兮 5fe2e2c75c chore: move Jenkins pipeline config out of repo 2026-06-05 15:08:11 +08:00
湛兮 3e1789e124 ci: harden production tag selection 2026-06-05 14:45:44 +08:00
湛兮 3efb2182b2 ci: add production tag pipeline 2026-06-05 14:38:25 +08:00
湛兮 6953f48344 chore: split dev and production deployment env 2026-06-05 12:32:16 +08:00
5 changed files with 42 additions and 2 deletions
+6
View File
@@ -0,0 +1,6 @@
ACCESS_MANAGE_API_BASE_URL=http://127.0.0.1:3500/api
ROLE_USER_SESSION_COOKIE=role_user_session
APP_ENV=production
APP_ENV_LABEL=生产环境
PORT=3210
HOSTNAME=0.0.0.0
+6
View File
@@ -0,0 +1,6 @@
ACCESS_MANAGE_API_BASE_URL=http://127.0.0.1:3501/api
ROLE_USER_SESSION_COOKIE=role_user_session_test
APP_ENV=test
APP_ENV_LABEL=测试环境
PORT=3211
HOSTNAME=0.0.0.0
+2
View File
@@ -5,6 +5,8 @@
"scripts": { "scripts": {
"dev": "next dev -p 3210", "dev": "next dev -p 3210",
"build": "next build", "build": "next build",
"build:test": "next build",
"build:prod": "next build",
"start": "next start", "start": "next start",
"lint": "eslint", "lint": "eslint",
"typecheck": "tsc --noEmit --incremental false" "typecheck": "tsc --noEmit --incremental false"
+16
View File
@@ -1029,6 +1029,22 @@ textarea:focus-visible {
color: var(--accent-ink); color: var(--accent-ink);
} }
.environment-badge {
background: rgba(20, 20, 24, 0.86);
border-radius: 999px;
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
color: #ffffff;
font-size: 12px;
font-weight: 750;
letter-spacing: 0;
line-height: 1;
padding: 8px 10px;
position: fixed;
right: 12px;
top: 12px;
z-index: 60;
}
.skeleton { .skeleton {
animation: pulse 1.2s ease-in-out infinite; animation: pulse 1.2s ease-in-out infinite;
background: linear-gradient(90deg, #ececef, #fafafa, #ececef); background: linear-gradient(90deg, #ececef, #fafafa, #ececef);
+12 -2
View File
@@ -1,4 +1,5 @@
import type { Metadata, Viewport } from "next"; import type { Metadata, Viewport } from "next";
import { connection } from "next/server";
import "./globals.css"; import "./globals.css";
@@ -24,10 +25,19 @@ export const viewport: Viewport = {
themeColor: "#ffffff" themeColor: "#ffffff"
}; };
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) { export default async function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
await connection();
const environmentLabel = process.env.APP_ENV_LABEL || "生产环境";
return ( return (
<html lang="zh-CN"> <html lang="zh-CN">
<body>{children}</body> <body>
<div className="environment-badge" aria-label={`当前环境:${environmentLabel}`}>
{environmentLabel}
</div>
{children}
</body>
</html> </html>
); );
} }