Jenkins maven projet 构建在测试期间在 fork 上失败

问题描述

我正在 Jenkins 上构建 Maven 项目(版本 2.263.4,不是最后一个,但不是目前为止)。

这是一个 git 项目,在项目上完成推送时,带有管道配置和来自 bitbucket 的 webhook。

因此,当开发人员创建一个分支而另一个创建一个拉取请求时,我有 2 个并行构建。域测试运行约 45 分钟。

有时(不总是),我有这个错误

Command was /bin/sh -c cd /jenkins/workspace/a-hub_test-plantage-jenkins_PR-1/server/project-core/project-core-domain && /jenkins/tools/hudson.model.JDK/jdk11/jdk-11.0.2+9/bin/java -Xmx1500M -jar /jenkins/workspace/a-hub_test-plantage-jenkins_PR-1/server/project-core/project-core-domain/target/surefire/surefirebooter15630998754365374145.jar /jenkins/workspace/a-hub_test-plantage-jenkins_PR-1/server/project-core/project-core-domain/target/surefire 2021-05-04T12-39-54_622-jvmrun1 surefire5846464826560071036tmp surefire_13691263758446667285tmp
 Error occurred in starting fork,check output in log
14:46:13  [ERROR] Process Exit Code: 1
14:46:13  [ERROR]   at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:669)
14:46:13  [ERROR]   at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
14:46:13  [ERROR]   at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)

如果我重新运行构建错误,它就可以工作。

我使用的是 maven-surefire 2.22.2。

我尝试按照stackoverfow上的许多线程对其进行配置,但没有任何工作。我尝试使用 forkMode none 或其他东西,它可以工作,但我没有覆盖,因为 jaccoco 需要 fork 才能工作。所以我被卡住了。

我能做些什么来帮助我调试这个问题? 我不明白为什么当另一个正在构建时构建失败,因为对我来说 Jenkins 在不同的工作文件夹上工作,不是吗?那么为什么当我有多个并行构建时会出现问题?

感谢帮助

解决方法

我在源代码附近的 jenkins 中找到了一个 hs_err_pid.log,我发现内存不足!我看到我的测试是使用 -Xmx1500Mo 启动的,当我启动多个分支/pr 时出现问题,因此 jenkins 使用了所有内存并且在 fork 期间所有构建都失败了......我减少了 -Xmx 并且一切似乎都有效。