我的.gitab-ci.yml
的第一行如下:
image: gradle:5.0-jdk11
此图像为601mb,每次执行构建时,我总是不得不将其从docker hub中拉出。
是否可以通过任何方式将图像存储在Gitlab中项目的docker存储库中?以便在第一次运行构建时将其自动放置在该位置,然后在随后的构建调用中从那里检索?
答案 0 :(得分:0)
应该在页面“ Cache dependencies in GitLab CI/CD ”中进行描述,将图像声明为缓存中的伪像(由cache:paths
定义)
有时会造成混淆,因为名称伪像听起来像是只在工作之外有用的东西,例如下载最终图像。
但是在管道的各个阶段之间也可以使用工件。
因此,如果您通过下载所有必需的模块来构建应用程序,则可能需要将它们声明为工件,以便每个后续阶段都可以依赖它们在其中
还要检查您的Docker runner cache directory includes。
如果问题仍然存在,请尝试使用私有注册表,如issue 41924:
image: my-private-registry:5000/my-ci-image:latest
答案 1 :(得分:0)
如果您的Gitlab运行器已经提取了Docker映像,则下次需要它时,它将提取本地映像,而不是再次下载601mB映像。这是默认行为,除非您按https://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work
中的说明进行更改请记住,如果该图像已从gitlab-runner本地图像中删除,则必须从头开始。