我已经配置并按照设置进行工作
但是问题是,每次我运行mvn install
时,本地maven存储库中的某些内容都会发生变化(我假设它会更新pom元数据),并且gitlabRunner在每次构建时都会不断上传新版本的缓存。
与每次从Internet上下载Dep相比,使用这种“破坏的”缓存仍然更快,更可靠,但是上载可能要花很长时间,我想省掉这额外的时间。
如何修改我的构建以强制Maven生成可缓存本地存储库?
.gitlab-ci.yml
的简化版本:
variables:
# we have a custom java+maven image, that uses this ENV variable,
# to auto-configure path where to put the local maven repository
MAVEN_LOCAL_REPOSITORY: $CI_PROJECT_DIR/.cache/maven
job-build:
stage: build
image: internal-gitlab/java/maven:3.6-jdk8-alpine
script:
- mvn -B clean package
cache:
key: backend-dependencies
paths:
- .cache/
答案 0 :(得分:0)
您有一个常量作为缓存键。也许更细粒度的缓存会有所帮助。 See the link here
答案 1 :(得分:-1)
简而言之-准备具有所需依赖项的自己的Maven映像,并使用它代替internal-gitlab / java / maven:3.6-jdk8-alpine。
一些细节:
首先,您需要创建一个maven docker映像,其中显示了项目依赖项所需的全部(或大部分)。将其发布到注册表(gitlab有一个注册表),并使用它代替internal-gitlab / java / maven:3.6-jdk8-alpine。
要创建这样的图像,我通常会在CI中手动创建一个附加作业。您需要在初始阶段以及对项目依赖项进行大量修改时触发它。
可以在这里找到工作示例:
https://gitlab.com/alexej.vlasov/syncer/blob/master/.gitlab-ci.yml -该项目正在使用准备好的图像,并且它还有准备工作。
https://gitlab.com/alexej.vlasov/maven/blob/master/Dockerfile -dockerfile运行maven并下载依赖项一次。
优点: