【发布时间】:2019-08-02 06:58:46
【问题描述】:
假设我有一个包含 2 个步骤的 GitHub 操作工作流。
- 下载并编译我的应用程序的依赖项。
- 编译并测试我的应用程序
我的依赖项很少更改,编译的依赖项可以安全地缓存,直到我下次更改指定其版本的锁定文件。
是否有一种方法可以保存第一步的结果,以便将来的工作流程可以跳过该步骤?
【问题讨论】:
-
虽然 bitoiu 的回答是正确的,即今天的 GitHub Actions 中没有显式缓存功能,但在给定的工作流运行中,您确实会在工作流的各个步骤中获得隐式缓存。发生这种情况是因为 GitHub 卷在每个步骤中都会将您的存储库安装到 Docker 中。您在一个步骤中所做的任何更改都会保留在磁盘上,以供该工作流运行的后续步骤使用。当然,这不会像您所要求的那样缓存跨运行的依赖项构建,但其他人可能会发现 some 缓存的能力很有用。我认为没有记录此功能。
-
您可以做的另一件事是将构建依赖项缓存(例如,作为 tar)推送到 S3 / Minio / 等,就像 GitLab's distributed caching system 的工作方式一样。在 GitHub Actions 产品添加这样的功能之前,您现在必须手动执行与 S3 或类似的请求。这可以为您节省多少时间(如果有的话)当然取决于您的依赖项的大小以及 GitHub Actions 从 S3 提取的速度。我自己还没有测试过。
-
"GitHub 将删除超过 7 天未访问的所有缓存条目。"引用自 GitHub 的文档:docs.github.com/en/actions/guides/…
标签: github github-actions