Docker build cache — 70%-kal gyorsabb CI 5 trükkel
A Nortinia monorepo CI-je 12 percről 3,5 percre csökkent 5 Dockerfile trükkel. Mutatjuk pontosan, mi változott.
A CI idő nem technikai adat. Az a folyamat, ami meghatározza, hogy a csapat mennyit kísérletezik.
A Nortinia monorepo CI-je 2025 nyarán 12 perc volt build-enként. Szeptemberre 3,5 perc. Nem új hardware, nem más futó — 5 Dockerfile és build config változás. Az alábbiak konkrétan, számlázható hatással.
1. Multi-stage build — node_modules egyszer
Egy stage az npm/pnpm install-ra, egy másik a build-re, egy harmadik a futtatásra. A deps stage csak akkor fut újra, ha a package.json változik. Hatás: az átlag build 40%-ában ez a lépés kimarad, ez önmagában ~4 perc / build.
2. BuildKit cache mount
A RUN --mount=type=cache,target=/root/.pnpm-store pnpm install arra jó, hogy a pnpm store még akkor is megmarad, ha a layer invalidálódik. Ha csak egy package változik, nem töltjük le újra a 400 csomagot. Hatás: ~2 perc / build.
3-5. A többi
- 3. COPY lépések szigorú sorrendben: ritkán változó fájlok legalul, gyakran változók felül — pl. package.json előbb, src/ utoljára
- 4. .dockerignore kiterjesztés: node_modules, .git, coverage, .next — nem csak a build gyorsabb, hanem a képméret is -200 MB
- 5. GitHub Actions cache export/import: a BuildKit cache CI futások között megmarad, ha cache-from és cache-to flag-ekkel dolgozol
Az 5 trükk együtt 12 → 3,5 percre vitt minket. A legnagyobb haszon azonban nem az idő, hanem az, hogy a csapat most 3x többször pusholható a nap folyamán. A 12 perces build-re 3 pushot vártak, 3,5 percesre 10-et. Ez több iteráció, több kísérletezés, gyorsabb feature delivery. A CI idő valódi üzleti metrika.