2013-03-27 11 views
0

У меня есть файл .Jar, который будет просто загружать данные в базу данных при ее запуске. Я планировал запустить эту работу через Дженкинса. Когда я выполняю задание в Jenkins, он успешно запускает .JAR. Однако скажите, есть ли исключение с нулевым указателем в задании, и оно не завершилось успешно. Даже тогда Дженкинс говорит, что работа «прошла». Как я могу выполнить работу, если во время выполнения задания возникла проблема?Ошибка выполнения задания jenkins

+1

Как вы «запустить» .jar файл? –

+0

Это исполняемый фляга. Итак, я jus сделал java -jar writer.jar в jenkins «настроить задание» раздел –

+0

делает банку вызов System.exit? – BevynQ

ответ

2

@ Решение Corey - это хорошо. И если вы не хотите писать JUnit-тест и поддерживать его в Jenkins, вы можете просто сделать то, о чем он упоминал ранее: поймать исключение нулевого указателя (на самом деле, только у вас есть улов верхнего уровня в вашем приложении) и вызовите API для выхода с кодом возврата:

try { 
    myCode.call(); 
catch (Exception e) { 
    System.out.println("An exception was caught at the top level:" + e); 
    System.exit(-1); 
} 
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

+0

как вы это сделали через Junit? –

+0

В моем случае у меня был доступ к исходному коду, поэтому я мог просто вызвать метод и посмотреть возвращение. Если вы действительно хотели взломать, я думаю, вы могли бы открыть банку и попытаться найти, что вызывать из файла манифеста. Извините, что не очень помогает :( –

+0

Я написал код и создал JAR, поэтому у меня есть доступ ко всему .. Итак, что именно нужно делать здесь? Спасибо –

1

Задания Jenkins завершаются с ошибкой, если код выхода ничего, кроме нуля.

System.exit(1); 

Должно работать (или потерпеть неудачу, чтобы быть более точным :-)

Смежные вопросы