Jenkins通过依赖缓存、Docker层级缓存、流水线级缓存及制品复用四大机制提升构建效率:Maven/Gradle/npm共享本地缓存;Docker优化层序并启用BuildKit;Pipeline Cache插件按key缓存输出;Job Cacher复用历史制品,配合清理策略保障稳定性。

Jenkins 利用缓存机制减少构建时间,核心是避免重复下载、编译或生成相同内容。只要中间产物能复用,就不用重跑——这是提速最直接有效的手段。
配置构建依赖缓存
Maven、Gradle、npm 等工具的依赖包体积大、下载慢,且多数构建中不会频繁变更。 - Maven:挂载宿主机上的本地仓库目录(如 `/var/jenkins_home/m2`)到容器或工作空间,让所有 job 共享同一份 `.m2/repository`。 - Gradle:启用 `--build-cache` 并配置 `gradle.properties` 指向共享缓存路径;也可用 `--configuration-cache` 加速配置解析。 - Node.js:在 Jenkinsfile 中用 `cache` step 缓存 `node_modules`,或通过 `npm ci --no-audit` + 挂载 volume 复用安装结果。注意:确保缓存目录权限正确(Jenkins 进程可读写),且不同分支/环境间无冲突(例如用 `${JOB_NAME}` 或 `${GIT_BRANCH}` 作为缓存 key 的一部分)。
利用 Docker 层级缓存
Docker 构建时按指令逐层生成镜像,只要某一层未变,后续层即可复用。 - 将变动少的指令(如 `COPY package.json .`、`npm install`)尽量提前,变动多的(如 `COPY . .`)放后面。 - 启用 BuildKit(在 Jenkins agent 启动脚本中设 `export DOCKER_BUILDKIT=1`),它支持更智能的缓存匹配和并发构建。 - 对多平台构建,用 `docker buildx bake` 配合 `docker-bake.hcl` 统一管理缓存策略和目标矩阵。实测显示:缓存命中时 Docker 构建可从 3–5 分钟降至 30–60 秒,命中率通常达 80% 以上。
启用 Jenkins 流水线级缓存
Pipeline: Cache Step 插件提供声明式缓存能力,适用于任意命令输出。 - 示例:缓存编译产物(如 `target/`)、测试报告或静态资源生成结果。 - 写法简洁:cache(key: 'build-output-${env.BUILD_ID}', path: 'target/') {
sh 'mvn clean compile'
}
- 注意 cache key 应包含影响输出的关键变量(如分支名、依赖版本哈希),避免污染和误命中。
复用构建制品与历史结果
- Job Cacher 插件可将构建产物(jar、zip、镜像等)上传至对象存储(S3、MinIO),下次构建前先检查是否存在可用制品。 - 对于单元测试结果,若代码未变,可跳过执行(配合 `git diff` 判断变更范围 + `skipTests` 参数)。 - 使用 `stash` / `unstash` 在 stages 间传递小文件,比重复拉取或生成更轻量。缓存不是“开了就行”,关键在命中率和生命周期管理。定期清理过期缓存(如保留最近 7 天、最多 5 个版本),防止磁盘撑满影响稳定性。


















