关于工作流依赖项缓存
工作流程运行通常在不同运行之间重新使用相同的输出或下载的依赖项。 例如,Maven、Gradle、npm 和 Yarn 等软件包和依赖项管理工具都会对下载的依赖项保留本地缓存。
为了帮助加快重新创建文件(如依赖项)所需的时间, GitHub 可以缓存经常在工作流中使用的文件。
项目与依赖项缓存
构件与缓存类似,因为它们能够在 GitHub 上存储文件,但每项功能都提供不同的用例,不能互换使用。
- 当想要重复使用在作业或工作流运行之间不频繁更改的文件时(例如从程序包管理系统构建依赖项),请使用缓存。
- 如果要保存作业生成的文件,以在工作流运行结束后查看(例如生成的二进制文件或生成日志),请使用项目。
有关工作流运行工件的详细信息,请参阅“使用工作流工件存储和共享数据”。
缓存安全性
缓存是根据工作流运行所使用的分支或标签来共享的,而不是根据工作流或作业的标识来共享。 请参阅 触发工作流的事件 和 GITHUB_REF,以了解用于各种工作流触发器的分支。 任何可以读取缓存的运行都将还原其内容 as-is,因此应将还原的文件视为不受信任的输入,并且永远不会将机密或其他敏感数据存储在缓存中。
不受信任的工作流可能会读取敏感的缓存内容,例如当来自复刻的 pull_request 恢复缓存时。 被投毒的缓存可能导致在受信任的工作流中执行代码。 为了限制缓存中毒的风险, GitHub 为响应低信任触发器的工作流提供默认分支范围内缓存的只读访问权限。
有关安全使用缓存的缓存范围、访问限制和最佳做法的详细信息,请参阅 依赖项缓存参考。
后续步骤
若要在工作流中实现依赖项缓存,请参阅 依赖项缓存参考。