【问题标题】:How can I save the build result of the Github Actions docker image如何保存 Github Actions docker 镜像的构建结果
【发布时间】:2021-06-05 04:05:48
【问题描述】:

是否可以保存Github动作的构建,这样下次就不会下载这个动作了,那么问题是我创建了一个动作来收集具有某些设置的php并且一切都在docker镜像中,它击败日期图像大约需要 2 分钟,这很多,因为在随后的执行中,重建整个图像并使用该图像的构建结果是没有意义的。

有什么方法可以缓存它或将这个 docker 构建的文件保存在某处吗?

【问题讨论】:

  • 您能否在问题中包含您的工作流程的源代码?我已经发布了答案,但如果我能看到您的工作流程,我可以添加更多细节。

标签: docker github dockerfile github-actions


【解决方案1】:

您可以使用本机缓存 - GitHub 对此有一个操作:https://github.com/actions/cache。

您应该将此缓存步骤放在构建步骤之前。

基本上,您会从文件(例如清单文件)或目录的哈希中创建一个密钥。然后,缓存操作将检查该键是否与缓存的键匹配。如果匹配,则重新加载缓存。如果不匹配,那么在您的构建步骤中,您将包含一个带有 steps.build-cache.outputs.cache-hit != 'true' 之类的 if 指令,以确保构建步骤仅在缓存无效时运行。

docker-layer-caching 操作基于 actions/cache,可用于缓存 Docker 容器的单独构建层。

【讨论】:

  • 感谢您的回答。我了解此操作会缓存文件,例如 composer 或 node_modules,但我仍然必须在 docker 容器中安装 composer 或 node 才能执行 composer validate 或类似 npm run build 的脚本?或者我从文档中不太了解它是如何工作的。
  • github.com/marketplace/actions/docker-layer-caching 帮助我的解决方案,编辑您对此操作的答案,因为实际上它是基于操作/缓存构建的,您的答案帮助我找到了这个库
  • 完成!这是一个很酷的动作——我不知道!我绝对将它用于我的工作?
猜你喜欢
  • 2020-10-28
  • 2023-02-17
  • 2023-02-21
  • 1970-01-01
  • 2021-01-20
  • 2021-12-10
  • 2022-11-18
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多