我有一个.jar文件,它会在运行时将数据加载到数据库中。我已经计划通过Jenkins运行这项工作。当我在詹金斯执行这项工作时,它成功运行.JAR。但是,如果作业中存在空指针异常并且未成功完成。即使在那时詹金斯说这个工作已经“通过”了。如果在作业执行期间出现问题,我该如何处理失败的作业?失败的詹金斯工作
失败的詹金斯工作
回答
@ Corey的解决方案是好的。如果你不想写一个JUnit测试并在Jenkins中支持它,你可以按照他之前提到的那样做:捕获空指针异常(实际上,只是在你的应用中有一个顶级的catch),并且请致电API以退出代码退出:
try {
myCode.call();
catch (Exception e) {
System.out.println("An exception was caught at the top level:" + e);
System.exit(-1);
}
上次我有这个问题,我决定采取不同的方法,将程序调用改为junit测试。詹金斯当时很开心。
Steps I took:
1. create an empty (maven) project
2. added a single java class SmokeTest.java
3. Added test that called the method I was testing via a script
4. Create a (maven) Jenkins job to run the project
我的测试内容:
public class SmokeTest
{
private static final String OK = "OK"; //$NON-NLS-1$
@Test
public void test()
{
// Create a new instance of the Firefox driver
final WebDriver driver = new HtmlUnitDriver();
final String url = PropertyManager.getInstance().getString(PropertyManager.SMOKE_TEST_URL_BASE) + "smoke/smoketest"; //$NON-NLS-1$
AuditLog.registerEvent("Smoke test url is: " + url, this.getClass(), AuditLog.INFO); //$NON-NLS-1$
driver.get(url);
// Find the text element by its id
final WebElement databaseElement = driver.findElement(By.id("database")); //$NON-NLS-1$
final String databaseResult = databaseElement.getText();
Assert.assertEquals(SmokeTest.OK, databaseResult);
//Close the browser
driver.quit();
}
}
这里最重要的部分是 “Assert.assertEquals” 行。这个结果是由jUnit拾取,因此jenkins
你是如何通过Junit做到这一点的? – 2013-03-27 01:33:30
在我的情况下,我可以访问源代码,所以我可以调用方法并观察返回。如果你真的想破解,我想你可以打开jar并尝试从清单文件中找到要调用的内容。对不起,这没有太大的帮助:( – 2013-03-27 01:36:19
我写了代码并创建了JAR,所以我可以访问所有东西..那么究竟需要在这里完成什么?谢谢 – 2013-03-27 01:40:09
如果退出代码不为零,则Jenkins作业失败。
System.exit(1);
应工作(或失败,是:-)更精确
- 1. 詹金斯作业Windows PowerShell脚本$ lastexitcode没有失败的詹金斯工作
- 2. 詹金斯没有失败
- 3. 詹金斯的工作失踪
- 4. 詹金斯的Git建立失败
- 5. 失败詹金斯工作从curl获得非200响应
- 6. 测试在詹金斯失败,但在外面工作
- 7. 从詹金斯工作
- 8. 多詹金斯工作区
- 9. 詹金斯:gitlabCommitStatus不工作
- 10. 詹金斯 - phantomJS功能测试失败
- 11. OpenShift部署,詹金斯失败
- 12. 詹金斯认证失败GitLab
- 13. 詹金斯 - 标记构建失败,NoHeadException
- 14. npm err!取詹金斯失败?
- 15. 詹金斯 - 进口读取失败(-1)
- 16. REST API认证失败 - 詹金斯
- 17. 詹金斯与pylint给建设失败
- 18. 詹金斯在夜间失败
- 19. 硒在詹金斯失败测试
- 20. 詹金斯挂断:请等待詹金斯准备工作
- 21. 詹金斯2.0 pipline的println不工作
- 22. 显示詹金斯的工作输出
- 23. 詹金斯工作的SBT不断OutOfMemory
- 24. 多配置詹金斯的工作
- 25. 詹金斯窗口,同时作为服务运行从失败
- 26. 詹金斯奴隶作业失败“意外终止渠道”
- 27. 詹金斯插件如何工作
- 28. 詹金斯奴隶不工作mesos
- 29. 清洁詹金斯工作区
- 30. 詹金斯2.0管道和工作DSL
你是如何 “跑” 的jar文件? – 2013-03-27 01:10:07
这是一个可执行的jar。所以我绝对没有java -jar writer.jar在jenkins“配置作业”部分 – 2013-03-27 01:20:36
做的jar调用System.exit? – BevynQ 2013-03-27 01:31:07