如何使用CI提取/重用Docker BuildKit缓存



Docker引入了RUN --mount=type=cache,我可以在本地很好地工作,但我希望能够在CI中利用它,特别是Azure Devops。

但是我找不到saveload之间构建缓存的方法。有这样的选择吗?

请参考本文档:

在microsoft托管代理的当前设计中,每个作业都被分派到新配置的虚拟机(基于从azure-pipelines-image-generation存储库模板生成的映像)。这些虚拟机在作业完成后被清理,而不是持久化,因此不能在后续作业中重用。虚拟机的短暂性阻止了缓存的Docker层的重用。

因此,当您使用microsofthosting代理时,VM上的本地docker缓存不能被其他构建使用。

以下是一些可供选择的方法:

  1. 您可以使用自托管代理来执行docker构建过程。多个版本可以共享本地缓存。

  2. 您也可以使用缓存任务和docker save/load commonds将保存的docker层上传到azure devops服务器,并在将来运行时恢复。

  3. 使用docker pull从远程存储库中提取镜像。使用——cache-from指向图像。您可以将构建映像推送到远程存储库,以便下一次构建。

你可以参考这个博客和这张票来获得更详细的信息。

最新更新