我有一個.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. 失敗詹金斯工作時,nosetests失敗
- 3. 詹金斯失敗建設
- 4. 詹金斯沒有失敗
- 5. 詹金斯的工作失蹤
- 6. 獲取失敗的原因詹金斯
- 7. 爲什麼rsync的失敗,詹金斯
- 8. 詹金斯的Git建立失敗
- 9. 詹金斯工作流程插件失敗,java.io.NotSerializableException:hudson.plugins.sshslaves.SSHLauncher
- 10. 失敗詹金斯工作從curl獲得非200響應
- 11. 測試在詹金斯失敗,但在外面工作
- 12. 詹金斯格里特觸發不同的詹金斯工作
- 13. 詹金斯:gitlabCommitStatus不工作
- 14. 從詹金斯工作
- 15. 多詹金斯工作區
- 16. 詹金斯和Maven構建npanday失敗
- 17. Jigomerge在詹金斯失敗build
- 18. 詹金斯 - 標記構建失敗,NoHeadException
- 19. 詹金斯版本號重置失敗
- 20. OpenShift部署,詹金斯失敗
- 21. npm err!取詹金斯失敗?
- 22. 詹金斯 - 進口讀取失敗(-1)
- 23. 詹金斯從代理啓動失敗
- 24. 容器啓動失敗詹金斯
- 25. 詹金斯 - phantomJS功能測試失敗
- 26. 硒在詹金斯失敗測試
- 27. REST API認證失敗 - 詹金斯
- 28. 詹金斯在夜間失敗
- 29. 詹金斯與pylint給建設失敗
- 30. 與詹金斯Kubernetes插件失敗
你是如何 「跑」 的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