fix(ci): 按任务声明 VITE 环境变量避免污染单测
ci / 质量门禁 (push) Failing after 2m47s

背景:run #41 单测推进到 @lingxi/web 后失败——use-login-form.spec 断言真实登录,
但 VITE_PUBLIC_DEMO_SESSION=true 在 job 级 env 对所有步骤生效,且 turbo globalEnv
会把 VITE 变量下发给 test 任务,导致演示会话被打开。

改动:
- turbo.json:globalEnv 的 VITE 变量改为 build / dev 任务显式声明;
- ci.yml:VITE 变量从 job env 下移到「构建」「端到端冒烟」两个步骤。

影响面:单测不再看到 demo 会话开关;构建与 e2e 仍以 demo 会话构建。
回滚方式:revert 本提交。
验证证据:本地 turbo web build / test 通过;推送后观察 run #42。
This commit is contained in:
Stev_Wang committed 2026-11-04 18:05:55 +08:00
1 parent 0ed855b42a
commit 59f07d823a
2 files changed
+11 -5

No files matched your search

+7 -2
View File
@@ -50,8 +50,6 @@ jobs:
JWT_ACCESS_SECRET: ci-only-access-secret-at-least-32-chars JWT_ACCESS_SECRET: ci-only-access-secret-at-least-32-chars
JWT_REFRESH_SECRET: ci-only-refresh-secret-at-least-32-chars JWT_REFRESH_SECRET: ci-only-refresh-secret-at-least-32-chars
WEB_ORIGIN: http://127.0.0.1:4173 WEB_ORIGIN: http://127.0.0.1:4173
VITE_PUBLIC_API_BASE_URL: http://127.0.0.1:3000/api/v1
VITE_PUBLIC_DEMO_SESSION: 'true'
PLAYWRIGHT_CHANNEL: '' PLAYWRIGHT_CHANNEL: ''
steps: steps:
@@ -89,7 +87,11 @@ jobs:
- name: 单元测试与覆盖率 - name: 单元测试与覆盖率
run: pnpm test run: pnpm test
# VITE_PUBLIC_DEMO_SESSION 只给构建 / e2e,避免污染单测里对真实登录流程的断言。
- name: 构建 - name: 构建
env:
VITE_PUBLIC_API_BASE_URL: http://127.0.0.1:3000/api/v1
VITE_PUBLIC_DEMO_SESSION: 'true'
run: pnpm build run: pnpm build
- name: 数据库迁移与幂等种子 - name: 数据库迁移与幂等种子
@@ -109,6 +111,9 @@ jobs:
run: pnpm exec playwright install --with-deps chromium run: pnpm exec playwright install --with-deps chromium
- name: 端到端冒烟 - name: 端到端冒烟
env:
VITE_PUBLIC_API_BASE_URL: http://127.0.0.1:3000/api/v1
VITE_PUBLIC_DEMO_SESSION: 'true'
run: pnpm test:e2e run: pnpm test:e2e
- name: 归档测试产物 - name: 归档测试产物
+4 -3
View File
@@ -1,15 +1,16 @@
{ {
"$schema": "https://turbo.build/schema.json", "$schema": "https://turbo.build/schema.json",
"ui": "stream", "ui": "stream",
"globalEnv": ["VITE_PUBLIC_API_BASE_URL", "VITE_PUBLIC_DEMO_SESSION"],
"tasks": { "tasks": {
"build": { "build": {
"dependsOn": ["^build"], "dependsOn": ["^build"],
"outputs": ["dist/**"] "outputs": ["dist/**"],
"env": ["VITE_PUBLIC_API_BASE_URL", "VITE_PUBLIC_DEMO_SESSION"]
}, },
"dev": { "dev": {
"cache": false, "cache": false,
"persistent": true "persistent": true,
"env": ["VITE_PUBLIC_API_BASE_URL", "VITE_PUBLIC_DEMO_SESSION"]
}, },
"typecheck": { "typecheck": {
"dependsOn": ["^build"] "dependsOn": ["^build"]