1010 # ===========================================================================
1111 changes :
1212 runs-on : ubuntu-latest
13+ timeout-minutes : 10
1314 # dorny/paths-filter 需要读取 PR 变更文件列表;Dependabot PR 的只读 token
1415 # 默认不含该权限,显式声明后 Dependabot PR 的路径检测才能正常工作
1516 permissions :
2021 sync-service : ${{ steps.filter.outputs.sync-service }}
2122 ai-gateway : ${{ steps.filter.outputs.ai-gateway }}
2223 website : ${{ steps.filter.outputs.website }}
24+ docs : ${{ steps.filter.outputs.docs }}
2325 steps :
2426 - uses : actions/checkout@v4
2527 - uses : dorny/paths-filter@v3
3638 - 'server/shared/**'
3739 website:
3840 - 'website/**'
41+ docs:
42+ - 'docs/**'
43+ - 'scripts/docs-check.mjs'
44+ - '.docscheckignore'
3945
4046 # ===========================================================================
4147 # Client —— React + Vite + Electron 前端
4450 needs : changes
4551 if : needs.changes.outputs.client == 'true'
4652 runs-on : ubuntu-latest
53+ timeout-minutes : 30
4754 steps :
4855 - uses : actions/checkout@v4
4956 - uses : actions/setup-node@v4
@@ -53,20 +60,26 @@ jobs:
5360 cache-dependency-path : client/package-lock.json
5461 - run : cd client && npm ci
5562 - name : Lint
56- run : cd client && npm run lint
63+ # --deny-warnings:2026-08 已清零全部 warning,此后新 warning 视为失败,
64+ # 防止 lint 债务回潮(审计 #4)
65+ run : cd client && npx oxlint --deny-warnings
5766 - name : Typecheck (renderer)
5867 # 渲染进程(React + Vite)的 TypeScript 编译检查
59- run : cd client && npx tsc --noEmit
68+ run : cd client && npm run typecheck
6069 # Electron 主进程使用独立的 tsconfig(CommonJS / Node 目标),
6170 # 与渲染进程的 Vite+DOM 配置不同,需单独检查以捕获主进程类型错误
6271 - name : Typecheck (Electron main process)
63- run : cd client && npx tsc -p electron/tsconfig.json --noEmit
72+ run : cd client && npm run typecheck: electron
6473 - name : Test (with coverage)
6574 # 启用覆盖率收集,与 vitest.config.ts 中配置的阈值配合,
6675 # 确保新增代码的测试覆盖不低于设定门槛
6776 run : cd client && npm run test -- --run --coverage
6877 - name : Build
6978 run : cd client && npm run build
79+ - name : Audit (client)
80+ # 供应链漏洞扫描:默认 registry 为 npmmirror 不支持 advisories API,
81+ # 显式指定官方 registry(见 migration-spec §15.5)
82+ run : cd client && npm audit --registry=https://registry.npmjs.org --audit-level=high
7083
7184 # ===========================================================================
7285 # Server / sync-service —— Go + Gin 同步服务
@@ -75,15 +88,16 @@ jobs:
7588 needs : changes
7689 if : needs.changes.outputs.sync-service == 'true'
7790 runs-on : ubuntu-latest
91+ timeout-minutes : 20
7892 defaults :
7993 run :
8094 working-directory : server/sync-service
8195 steps :
8296 - uses : actions/checkout@v4
8397 - uses : actions/setup-go@v5
8498 with :
85- # Go 1.25 尚未发布,使用当前最新稳定版 1.24(截至 2026 年 8 月 )
86- go-version : ' 1.24 '
99+ # 与 go.mod 的 go 1.25 指令一致(此前注释"1.25 尚未发布"已过时 )
100+ go-version : ' 1.25 '
87101 cache-dependency-path : server/sync-service/go.sum
88102 - name : Lint (go vet)
89103 run : go vet ./...
99113 needs : changes
100114 if : needs.changes.outputs.ai-gateway == 'true'
101115 runs-on : ubuntu-latest
116+ timeout-minutes : 20
102117 defaults :
103118 run :
104119 working-directory : server/ai-gateway
@@ -125,6 +140,7 @@ jobs:
125140 needs : changes
126141 if : needs.changes.outputs.website == 'true'
127142 runs-on : ubuntu-latest
143+ timeout-minutes : 20
128144 defaults :
129145 run :
130146 working-directory : website
@@ -142,3 +158,20 @@ jobs:
142158 run : npx tsc --noEmit
143159 - name : Build
144160 run : npm run build
161+
162+ # ===========================================================================
163+ # Docs —— 文档体系一致性检查(链接/索引/命名)
164+ # ===========================================================================
165+ docs :
166+ needs : changes
167+ if : needs.changes.outputs.docs == 'true'
168+ runs-on : ubuntu-latest
169+ timeout-minutes : 10
170+ steps :
171+ - uses : actions/checkout@v4
172+ - uses : actions/setup-node@v4
173+ with :
174+ node-version : 20
175+ - name : Docs check
176+ # 相对链接完整性 + 索引覆盖 + 命名规范(历史快照豁免见 docs/.docscheckignore)
177+ run : node scripts/docs-check.mjs
0 commit comments