feat(ci): 前端构建缓存优化 - 去重+BuildKit cache mount #427

Merged
xiaoxia merged 1 commits from feat/ci-frontend-cache into develop 2026-07-17 00:59:54 +08:00
Owner

优化内容

1. 干掉重复构建(最大收益)

  • 删除ci-build.yml中Build frontend assets (npm build)步骤
  • 该步骤在host上用docker run构建一次,Dockerfile里又构建一次,完全重复
  • 直接省掉一次完整的npm ci + tsc + vite build

2. BuildKit cache mount 三级缓存

缓存层 路径 作用
npm下载缓存 /root/.npm 避免重复下载npm包
node_modules apps/web/node_modules 依赖不变时跳过npm ci安装
TS增量编译 apps/web/.tscache 源码变动少时tsc秒级完成

3. 缓存特性

  • sharing=locked 防止并发构建竞争写缓存
  • 结合已有的buildx layer cache,形成双层缓存体系
  • 依赖不变 → layer cache命中,全跳过
  • 依赖不变但源码变 → layer cache不命中,但node_modules+TS缓存命中,只有vite构建
  • 依赖也变 → npm缓存命中,安装+构建全跑

预期收益

Web镜像构建时间从当前水平降低 40%-60%

验证

  • CI构建成功,Web镜像正常产出
  • 第二次构建(依赖不变)速度明显提升
  • Staging部署后页面正常访问
## 优化内容 ### 1. 干掉重复构建(最大收益) - 删除ci-build.yml中`Build frontend assets (npm build)`步骤 - 该步骤在host上用docker run构建一次,Dockerfile里又构建一次,完全重复 - 直接省掉一次完整的npm ci + tsc + vite build ### 2. BuildKit cache mount 三级缓存 | 缓存层 | 路径 | 作用 | |--------|------|------| | npm下载缓存 | `/root/.npm` | 避免重复下载npm包 | | node_modules | `apps/web/node_modules` | 依赖不变时跳过npm ci安装 | | TS增量编译 | `apps/web/.tscache` | 源码变动少时tsc秒级完成 | ### 3. 缓存特性 - `sharing=locked` 防止并发构建竞争写缓存 - 结合已有的buildx layer cache,形成双层缓存体系 - 依赖不变 → layer cache命中,全跳过 - 依赖不变但源码变 → layer cache不命中,但node_modules+TS缓存命中,只有vite构建 - 依赖也变 → npm缓存命中,安装+构建全跑 ### 预期收益 Web镜像构建时间从当前水平降低 **40%-60%** ### 验证 - [ ] CI构建成功,Web镜像正常产出 - [ ] 第二次构建(依赖不变)速度明显提升 - [ ] Staging部署后页面正常访问
xiaoxia added 1 commit 2026-07-17 00:38:30 +08:00
feat(ci): 前端构建缓存优化 - 去掉重复构建+BuildKit cache mount
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 5s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 43s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m25s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m55s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m18s
61639c5a2d
- 删除host上重复的Build frontend assets步骤(Dockerfile中已构建)
- web.Dockerfile加BuildKit cache mount:
  * /root/.npm: npm下载缓存
  * node_modules: 依赖包缓存,避免重复安装
  * .tscache: TypeScript增量编译缓存
- 预计Web构建耗时降低40%-60%
auto-approve-bot approved these changes 2026-07-17 00:53:12 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia merged commit 84d1673d31 into develop 2026-07-17 00:59:54 +08:00
xiaoxia deleted branch feat/ci-frontend-cache 2026-07-17 00:59:54 +08:00
Sign in to join this conversation.