这是一个在Jenkins上运行的maven构建版本。本帖末尾列出的版本号。当我在generate-test-resources阶段出现错误时,我试图找出如何中止我的构建。Jenkins和Maven,在生成测试资源期间放弃构建失败构建
要求:在maven的generate-test-resources阶段,我有在远程服务器(iSeries)上运行的进程。从这些调用中,我检索一个成功标志(true或false)。当我弄错时,我想将整个构建标记为BUILD FAILURE,并放弃构建。
我在generate-test-resources中运行的代码是用Java编写的,但它将作业提交给iSeries,并且真正的工作是在那些提交的作业中完成的。
理性:我的主要目的是构建它来执行JUnit测试用例。 generate-test-resources阶段调用进程来初始化测试环境。如果生成测试资源阶段不是100%成功,测试可能会通过,但这些结果将是无效的。
此外,当生成测试资源有问题但所有测试用例都通过时,Jenkins会报告BUILD SUCCESS。很奇怪。
例如:这是我的日志中的一个例子。我知道我对MY_BUILD_COMMAND的调用正确回拨到服务器,并且大部分时间都是成功的。但是当出现错误时,我需要将其陷入困境。请注意,我有在状态
23:11:33.982 INFO BuildTestEnvironment | -- Begin BuildTestEnvironment ---------------------
23:11:35.224 INFO BuildTestEnvironment | Connected to VQ_INSCI10 as VQCINSCI10
23:11:35.292 INFO qcmdExc | CALL QCMDEXC('MY_BUILD_COMMAND', 16)
23:11:35.621 FATAL qcmdExc | [CPF0006] Errors occurred in command.
java.sql.SQLException: [CPF0006] Errors occurred in command.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:646)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:617)
at com.ibm.as400.access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java:1401)
at com.ibm.as400.access.AS400JDBCStatement.execute(AS400JDBCStatement.java:1755)
at main.java._tools.QcmdExc.run(QcmdExc.java:33)
at main.java._tools.BuildTestEnvironment.main(BuildTestEnvironment.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
at java.lang.Thread.run(Thread.java:744)
23:11:35.624 INFO BuildTestEnvironment | success? = false
,然后在日志的末尾 “成功=假?”:
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ VSP_UnitTest ---
[INFO] Installing /root/.jenkins/workspace/VSP_v10_Continuous/target/VSP_UnitTest-1.0-SNAPSHOT.jar to /root/.m2/repository/VSP_UnitTest/VSP_UnitTest/1.0-SNAPSHOT/VSP_UnitTest-1.0-SNAPSHOT.jar
[INFO] Installing /root/.jenkins/workspace/VSP_v10_Continuous/pom.xml to /root/.m2/repository/VSP_UnitTest/VSP_UnitTest/1.0-SNAPSHOT/VSP_UnitTest-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:09:12.515s
[INFO] Finished at: Mon Sep 22 00:20:38 EDT 2014
[INFO] Final Memory: 28M/393M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /root/.jenkins/workspace/VSP_v10_Continuous/pom.xml to VSP_UnitTest/VSP_UnitTest/1.0-SNAPSHOT/VSP_UnitTest-1.0-SNAPSHOT.pom
[JENKINS] Archiving /root/.jenkins/workspace/VSP_v10_Continuous/target/VSP_UnitTest-1.0-SNAPSHOT.jar to VSP_UnitTest/VSP_UnitTest/1.0-SNAPSHOT/VSP_UnitTest-1.0-SNAPSHOT.jar
channel stopped
Email was triggered for: Always
Sending email for trigger: Always
Sending email to: [email protected]
Finished: UNSTABLE
版本中使用:
- maven- complier-plugin = 2.3.2
- exec-maven-plugin = 1.3
- Jen亲爱的1.539
- JUnit的4.11
感谢您的信息。我的java根本没有返回任何代码,所以我会认为这被认为是成功= 0。我添加了System.exit(i),并且测试出来没问题。詹金斯今晚会尝试这个,我会让你知道它是如何发生的。 – bobanahalf 2014-09-22 20:12:41
好的。结果是,如果我返回任何退出代码,Maven就会保释。所以当我真的有错误时,我将它设置为System.exit()。似乎工作正常。 – bobanahalf 2014-09-23 11:49:49