我的项目是用gradlew构建的。Gradle CI使用官方GitLab镜像在docker runner中构建项目(请参阅https://hub.docker.com/_/gradle)。
现在,即使Gradle已经安装在cointainer中,包装器仍然会每次都下载发行版。这构成了构建时间的大部分。
我如何“告诉”包装器已经安装的发行版,这样它就不会重新下载它(当然,假设版本匹配)?
当然,另一种选择是在CI中使用gradle而不是gradlew,并依靠docker镜像来获得正确的发行版,但如果可能的话,我希望避免这种情况,因为那样我就必须手动保持.gitlab-ci.yml和包装器配置的同步。
发布于 2019-09-25 20:38:12
我认为您不能指示包装器使用手动安装的Gradle的本地版本。
我能想到的避免在每次构建时都下载发行版的唯一方法是缓存Gradle主文件夹(例如/ home / Gradle /.gradle),这不会涉及升级gradle时的额外步骤。这应该是可能的,即使它驻留在Docker容器中。
我不知道GitLab如何支持缓存的细节,但可能只有当缓存存储在本地时才有意义(或者存储在同一台计算机上,或者存储在具有高网络带宽的缓存服务器中)。如果每次构建时都必须从S3存储桶中上传和下载它,那么这可能会花费与从services.gradle.org下载一样多的时间。但是如果你能做到这一点,你不仅可以缓存Gradle发行版,还可以缓存构建依赖项,这应该会进一步加快构建速度。
https://stackoverflow.com/questions/58096540
复制相似问题