gpt4 book ai didi

docker - GitLab CI 因 maven-surefire-plugin 和 VM 崩溃而失败

转载 作者:IT老高 更新时间:2023-10-28 21:24:49 30 4
gpt4 key购买 nike

我们有大约 10 个不同的应用程序,它们是带有 Groovy 的 Spring Boot 项目。

我们所有的项目都在所有开发人员工作站中正确构建,并且直到昨天它们都在正常运行,但是今天突然间它们都停止了,只在我们的 GitLab CI 管道中停止工作,并出现以下错误:

[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:37 min
[INFO] Finished at: 2018-10-31T17:49:11Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test) on project ctg-oms-component: There are test failures.
[ERROR]
[ERROR] Please refer to /builds/ctg-integrations/ctg-oms-component/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] ExecutionException The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

我已经提取了使用我们的 GitLab CI 管道的相同 docker 镜像,测试了构建项目并且一切正常。但是,该错误仅发生在 GitLab CI 中。

经过调查,看起来surefire 正在创建一个导致 GitLab CI docker 崩溃的 fork 。为了解决这个问题,我在下面添加了显式配置以避免 fork VM,这消除了上述错误。

<!-- Needed only for GitLab CI -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkCount>0</forkCount>
</configuration>
</plugin>

你知道为什么会这样吗?是否有另一种方法来修复 GitLab CI 以避免此问题?我不太喜欢这种解决方法,因为它只是避免 GitLab CI 爆炸的一种方法,但不知道 Gitlab 中如何在幕后处理 Docker。

最佳答案

这些问题与最新的 maven docker 镜像有关。

有一个开放的 github 问题,人们报告了同样的问题: https://github.com/carlossg/docker-maven/issues/90

经过调查,我可以使用 alpine 版本解决问题,这让我无需添加 maven-surefire-plugin 解决方法。值得一提的是,使用 surefire 解决方法会带来另一个问题,例如 jacoco 之类的插件无法运行,因为它们需要 VM fork。

因此,这些图像可以无缝运行(不需要万无一失的解决方法):

  • maven:3.3.9-jdk-8
  • maven:3.5.3-jdk-8
  • maven:3.5.4-jdk-8-alpine
  • maven:3.6.0-jdk-8-alpine

但是,如果我们使用非 alpine 版本,问题仍然存在。

关于docker - GitLab CI 因 maven-surefire-plugin 和 VM 崩溃而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093020/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com