缓存依赖以加快构建
使用 actions/cache 操作、密钥和恢复密钥缓存依赖与构建产物,加快持续集成流水线
缓存依赖以加快构建 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
反复重新安装的代价
持续集成的大部分时间都花在每次运行中下载和安装相同的依赖项上。缓存会在多次运行之间保存这些依赖项,让后续构建复用已有工作,通常可以大幅缩短流水线用时。
缓存操作
GitHub 提供 actions/cache。您需要为它提供要缓存的路径,以及用于标识缓存条目的键。命中时,它会恢复该路径;否则会在作业结束后保存它。
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}设计好的键
只有在缓存内容应发生变化时,键才应该变化。对锁定文件进行哈希处理非常理想:新的锁定文件意味着新的依赖项,因此会创建新的缓存条目。
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}恢复键
restore-keys 提供后备前缀。如果精确键未命中,操作会恢复键以某个前缀开头的最新缓存,从而提供部分预热的启动状态。
restore-keys: |
${{ runner.os }}-npm-缓存命中与未命中
精确匹配键时会发生缓存命中,并恢复相应路径。未命中时,作业会正常运行,并在结束时使用主键保存缓存,以便下次使用。
内置的设置缓存
语言设置操作内置了缓存功能。对于 Node,使用 cache: npm 的 setup-node 会为您处理依赖项缓存,无需单独的缓存步骤。
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm缓存什么内容
请缓存包管理器的下载目录;在可能的情况下,不要缓存已安装的 node_modules,因为下载缓存具有可移植性,而且安装步骤仍会验证完整性。
- Node:
~/.npm - Python:pip 缓存
- Java:
~/.m2或 Gradle 缓存
缓存范围和限制
缓存的范围限定于某个分支(也会后备到默认分支),并且每个仓库都有大小限制。未使用的缓存会随着时间被清除,因此请设计能够平稳变化的键。
避免使用过期缓存
如果键永远不变,您可能会提供过时的依赖项。请始终将键与锁定文件哈希值关联,这样更新就会自动使缓存失效。
键中的矩阵和操作系统
在跨操作系统或版本进行矩阵构建时,请将 runner.os 和版本包含在键中,让每个变体获得各自正确的缓存,而不是彼此冲突。
key: ${{ runner.os }}-node20-${{ hashFiles('package-lock.json') }}衡量收益
比较启用缓存前后的作业时长,并观察日志中的缓存命中指示器。持续偏低的命中率表明键变化过于频繁。
快速检查
检验您对依赖项缓存的理解。
回顾
您通过依赖项缓存加快了持续集成:使用带有锁定文件哈希值键和restore-keys后备的 actions/cache 操作,使用设置操作中的内置缓存,选择要缓存的内容,在矩阵键中包含操作系统和版本,并通过将键与锁定文件关联来避免过期缓存。
常见问题解答
「缓存依赖以加快构建」课时是免费的吗?
是的 — 「缓存依赖以加快构建」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「缓存依赖以加快构建」这节课中我会学到什么?
使用 actions/cache 操作、密钥和恢复密钥缓存依赖与构建产物,加快持续集成流水线 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「缓存依赖以加快构建」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。