我有一个带有gradle的 spring-boot java应用程序构建,由gitlab.com上的gitlab CI运行,效果很好。但是每次CI运行时,下载依赖项都需要花费很多时间(因为我使用的是gitlab.com的gitlab shared-runner,它是docker-auto-scale
runner并且它不会为下一次运行缓存任何内容。
我的想法是在docker:latest
上创建一个docker镜像库(因为构建作业需要在运行时与docker守护程序交互)和预安装或添加gradle缓存到图像,以便图像包含我的应用程序所需的所有依赖项,当CI运行时,它不需要重新下载依赖项。
以前有人做过吗?
答案 0 :(得分:0)
我有你的确切想法,但对于Maven。
在docker映像构建期间,我将我的项目文件复制到映像中并运行mvn clean install
并将其上传到我的gitlab注册表。
CI管道执行时间大大减少。
但是,每当你有新的依赖关系时,你当然需要这样做,或者至少当缓存中已有的东西与你的应用程序所需的依赖关系之间存在很大差异时。