360 Secure SkillHub
360 安全技能中心

Ci Build Cache Advisor

面向 GitHub Actions、GitLab CI、CircleCI、Jenkins 的构建缓存优化建议技能:识别 CI 平台、检查应缓存的依赖与产物、分析常见缓存问题,按平台给出缓存键配置示例与改进建议,并输出缓存使用情况表和预计优化效果。

charlie-morrison
charlie-morrison
热度 39.73
最近更新 2026-05-11 17:46:58
分类:开发依赖:代码执行 / 读写文件应用场景:DevOps / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ci-build-cache-advisor
Metadata
name
ci-build-cache-advisor
description
Optimize CI/CD build caching across GitHub Actions, GitLab CI, CircleCI, and Jenkins — analyze cache hit rates, recommend cache keys, and reduce build times.
metadata
{"tags":["ci-cd","caching","build","performance","devops"]}

CI Build Cache Advisor

Optimize CI/CD build caching strategies across GitHub Actions, GitLab CI, CircleCI, and Jenkins. Analyze cache configurations, recommend cache keys, identify cache misses, and reduce build times by maximizing cache hit rates.

Usage

"Optimize caching in my CI pipeline"
"Why are my builds not using cache?"
"Design cache keys for my monorepo CI"
"Reduce my CI build time"

How It Works

1. CI Platform Detection

ls .github/workflows/ 2>/dev/null && echo "GitHub Actions"
ls .gitlab-ci.yml 2>/dev/null && echo "GitLab CI"
ls .circleci/config.yml 2>/dev/null && echo "CircleCI"
ls Jenkinsfile 2>/dev/null && echo "Jenkins"

2. Cache Analysis

What should be cached:

  • Package manager dependencies (node_modules, .pip, .cargo, .gradle)
  • Build artifacts (compiled code, generated assets)
  • Docker layers
  • Test fixtures and snapshots
  • Linter and type checker caches

Cache key strategy:

  • Primary key: hash of lockfile (package-lock.json, Cargo.lock)
  • Restore key: platform + branch fallback
  • Matrix-aware: different caches per OS/Node version/Python version
  • Monorepo: workspace-specific caches

3. Common Issues

  • Cache too broad: Single cache for entire node_modules invalidated by any dep change
  • Cache too narrow: Cache key includes commit SHA (never hits)
  • Missing restore keys: No fallback when primary key misses
  • Cache pollution: Dev dependencies cached for production builds
  • Stale cache: Cache never expires, using outdated artifacts
  • Cache size limit: Exceeding platform limits (GitHub: 10GB, GitLab: varies)

4. Recommendations by Platform

GitHub Actions:

- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-npm-

GitLab CI:

cache:
  key:
    files: [package-lock.json]
    prefix: $CI_JOB_NAME
  paths: [node_modules/]
  policy: pull-push

5. Advanced Strategies

  • Turbo/Nx remote caching: Share build cache across CI and developers
  • Docker layer caching: BuildKit cache mounts, registry-backed cache
  • Gradle build cache: Remote cache server for team-wide sharing
  • ccache/sccache: C/C++/Rust compilation caching

Output

## CI Cache Optimization

**Platform:** GitHub Actions | **Workflows:** 3

### Current Cache Usage
| Workflow | Cache Configured | Hit Rate | Build Time |
|----------|-----------------|----------|------------|
| CI | Yes (npm) | 67% | 8m 30s |
| Deploy | No | 0% | 12m 15s |
| Release | Partial | 45% | 15m |

### Recommendations
1. **Add npm cache to Deploy workflow** — saves ~3 min/run
2. **Fix CI cache key** — includes branch name (low hit rate on PRs)
   → Remove branch, use lockfile hash only
3. **Add Docker layer caching to Release** — saves ~5 min
4. **Add TypeScript build cache** — `tsBuildInfoFile` not cached

### Projected Improvement
- CI: 8m 30s → 3m 45s (56% faster)
- Deploy: 12m 15s → 7m (43% faster)
- Release: 15m → 8m (47% faster)
- Monthly minutes saved: ~2,400 (~$19)