【发布时间】:2021-07-21 00:59:49
【问题描述】:
我正在尝试设置我的 Gitlab CI/CD 来为我的 Java/Maven/Spring Boot 应用程序编译和运行测试。 我已经设置了一个 Gitlab Runner 并创建了我的 .gitlab-ci.yml 并且一切正常,但是非常慢。 我为我的跑步者尝试了许多配置,但都没有成功。
所以我退后一步,尝试在本地机器上的 Docker 上运行测试。
直接在我的机器上运行的构建 + 测试需要 17 分钟。 在 docker 上运行的构建 + 测试耗时超过 1 小时。
我获得的最佳性能是使用这个 docker 命令:
docker run -it --rm --name comp2 --mount type=bind,source="C:/ProjetosJava/eaud",destination=/usr/src/mymaven -e MAVEN_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xmx4096m -Xms1024m -XX:MaxPermSize=1024m -Dmaven.repo.local=.m2/repository -XX:+TieredCompilation -XX:TieredStopAtLevel=1' -w /usr/src/mymaven maven:3.3-jdk-8 /bin/bash
在 bash 里面我做了:
mvn -s .m2/settings.xml clean compile test
我需要在 docker 内部构建至少有一个关闭时间(17 分钟)。
【问题讨论】:
-
我不知道为什么你的构建速度很慢(我猜,没有更多信息,没有人会知道),但我知道的是
clean compile test表明你不知道Maven 生命周期。对于测试只需运行clean test。 -
还看到您将内存配置为 4 GiB 内存?真的需要吗?
-
4gb 是一个尝试.. 我什么都试过了,但是构建起来比在本地机器上要慢....
-
@renanleandrof 抱歉,评论可能听起来有点傲慢。但是,您应该将
clean compile test更改为clean test。 -
构建的前 17 分钟时间很多。多少个 LoC?多少测试?多少个模块?测试需要多长时间?第二:一般来说,容器内的构建总是比裸机慢,因为您要添加多个层......此外,您还没有映射 docker 容器中的本地缓存,这意味着每个构建都会下载很多......为什么使用 Maven 3.3?而不是最近的?为什么在 Container 中设置如此巨大的内存设置?你的 Docker 守护进程支持吗?内存增强不会减少构建时间...
标签: java docker maven gitlab-ci gitlab-ci-runner