【问题标题】:Jenkins and Maven, abort build on BUILD FAILURE during generate-test-resourcesJenkins 和 Maven,在生成测试资源期间中止构建失败
【发布时间】:2014-11-16 15:59:30
【问题描述】:

这是一个 Maven 构建,在 Jenkins 上运行。本文末尾列出的版本号。当我在 generate-test-resources 阶段遇到错误时,我试图弄清楚如何中止我的构建。

要求:在 maven 的 generate-test-resources 阶段,我有在远程服务器 (iSeries) 上运行的进程。从这些调用中,我检索到一个成功标志(真或假)。当我得到错误时,我想将整个构建标记为 BUILD FAILURE,然后中止构建。

我在 generate-test-resources 中运行的代码是用 Java 编写的,但它会将作业提交给 iSeries,而真正的工作是在那些提交的作业中完成的。

理性:我构建它的主要目的是执行 JUnit 测试用例。 generate-test-resources 阶段调用进程来初始化测试环境。如果 generate-test-resources 阶段不是 100% 成功,则测试可能会通过,但这些结果将无效。

此外,当 generate-test-resources 出现问题,但所有测试用例都通过时,Jenkins 会报告 BUILD SUCCESS。很奇怪。

示例:这是我日志中的示例。我知道我对 MY_BUILD_COMMAND 的调用正确地回调了服务器,并且大多数日子都是成功的。但是当出现错误时,我需要捕获它。请注意,我的状态为“success? = false”

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@email.com
Finished: UNSTABLE

正在使用的版本:

  • maven-compiler-plugin = 2.3.2
  • exec-maven-plugin = 1.3
  • 詹金斯版本。 1.539
  • JUnit 4.11

【问题讨论】:

    标签: java unit-testing maven junit jenkins


    【解决方案1】:

    exec-maven-plugin exec 目标有一个successCodes 元素。通常在 Unix 系统上,成功运行的命令返回 0。我想知道测试设置返回的 false 是否被解释为 0,就插件而言,这表示成功。尝试将<successCodes>1</successCodes> 添加到插件配置中,看看是否会导致构建失败。

    【讨论】:

    • 感谢您的信息。我的 java 根本没有返回任何代码,所以我认为这被认为是成功 = 0。我添加了 System.exit(i),测试结果还可以。詹金斯今晚会尝试这个,我会告诉你进展如何。
    • 好的。事实证明,如果我返回任何退出代码,Maven 就会放弃。因此,当我实际遇到错误时,我将其设置为 System.exit()。似乎工作正常。
    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2015-11-15
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多