我有一个用gradle构建的 spring-boot java应用程序,由gitlab CI在gitlab.com上运行,效果很好。但是每次CI运行时,都需要花费大量时间来下载依赖项(因为我使用的是gitlab.com的gitlab shared-runner,它是docker-auto-scale运行器,并且在下次运行时不会缓存任何内容)。

我的想法是在docker:latest上创建docker镜像(因为构建作业需要在运行时与docker守护程序进行交互),然后预安装将gradle缓存添加到镜像,以便镜像包含我的应用程序需要的所有依赖项CI运行时,不需要重新下载依赖项。

有人做过吗?

最佳答案

我有和您一样的主意,但对于Maven。
在docker镜像构建期间,我将镜像中的项目文件复制并运行mvn clean install并将其上传到我的gitlab注册表中。

CI管道执行时间大大减少。

但是,当然,每当您有新的依赖项时,或者至少在缓存中已有的内容与应用程序所需的依赖项之间有很大差异时,您当然都需要这样做。

08-04 14:09