Docker引入了RUN --mount=type=cache
,我可以在本地很好地工作,但我希望能够在CI中利用它,特别是Azure Devops。
但是我找不到save
和load
之间构建缓存的方法。有这样的选择吗?
请参考本文档:
在microsoft托管代理的当前设计中,每个作业都被分派到新配置的虚拟机(基于从azure-pipelines-image-generation存储库模板生成的映像)。这些虚拟机在作业完成后被清理,而不是持久化,因此不能在后续作业中重用。虚拟机的短暂性阻止了缓存的Docker层的重用。
因此,当您使用microsofthosting代理时,VM上的本地docker缓存不能被其他构建使用。
以下是一些可供选择的方法:
-
您可以使用自托管代理来执行docker构建过程。多个版本可以共享本地缓存。
-
您也可以使用缓存任务和
docker save/load commonds
将保存的docker层上传到azure devops服务器,并在将来运行时恢复。 -
使用docker pull从远程存储库中提取镜像。使用——cache-from指向图像。您可以将构建映像推送到远程存储库,以便下一次构建。
你可以参考这个博客和这张票来获得更详细的信息。