Docker-> Maven-> Failsafe-> Surefire启动fork失败,“分叉虚拟机终止,没有正确说再见。 虚拟机崩溃或System.exit调用?

按照标题:我试图从集装箱的jenkins奴隶运行Maven自动化testing,经过一个星期的斗争,现在我已经没有想法。 它的工作原理就像使用RAM 4G的AWS实例一样,但不受限制(在RAM和CPU)容器上,它会失败,出现如下错误。 唯一的情况是,当我禁用分叉故障安全插件,但这不是一个选项前进。

我尝试了各种使用Google可以find的Java / Maven / Failsafe / Surefire选项,但没有运气(比如添加全局Java -Xmx选项以及在pom.xml中的每个插件)。

有没有人像这样成功地运行它?

这似乎应该更容易处理,但如果我有任何的话,我会把我头上的所有头发都拉出来。 我仍然不喜欢承认失败的想法。 请帮忙!

这些是插件在失败后创build的转储:

故障安全-summary.xml:

<?xml version="1.0" encoding="UTF-8"?> <failsafe-summary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-sure fire-plugin/xsd/failsafe-summary.xsd" result="254" timeout="false"> <completed>0</completed> <errors>0</errors> <failures>0</failures> <skipped>0</skipped> <failureMessage>org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM cras h or System.exit called? Command was /bin/sh -c cd /var/lib/jenkins/workspace/ui_acceptance_test_chrome_docker_freestyle &amp;&amp; /usr/lib/jvm/java-1.8-openjdk/jre/bin/ja va -Dfile.encoding=UTF-8 -jar /var/lib/jenkins/workspace/ui_acceptance_test_chrome_docker_freestyle/target/surefire/surefirebooter81206735832436906 05.jar /var/lib/jenkins/workspace/ui_acceptance_test_chrome_docker_freestyle/target/surefire 2017-10-10T15-02-35_189-jvmRun1 surefire59539140137458 58339tmp surefire_03559885505222114015tmp Error occurred in starting fork, check output in log Process Exit Code: 1 at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:686) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:535) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:280) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1124) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:954) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:832) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) </failureMessage> </failsafe-summary> 

2017-10-10T15-02-35_189-jvmRun1.dump:

 # Created on 2017-10-10T15:02:36.303 Killing self fork JVM. Maven process died. 

尝试降级到Surefire 1.18.1。 今晚我遇到了这个问题,花了几个小时的时间,到目前为止,为什么更新的版本的Surefire在Docker下破解并不容易。

*更新*

我在使用Alpine linux时遇到了问题,但是在使用Ubuntu或Debian基本映像时,一切正常。 因此,1.21内的某些东西正在破坏与某些操作系统的兼容性