2015-02-23 19 views
38

Jenkins, Maven 3.1 ve Java 1.6 kullanıyorum. Ben Maven birim testleri başarısız olduğunda Jenkins'in başarısız olmasını nasıl sağlayabilirim?

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.17</version> 
     <configuration> 
       <reuseForks>true</reuseForks> 
       <argLine>-Xmx2048m -XX:MaxPermSize=512M </argLine> 
       <skipTests>false</skipTests> 
     </configuration> 
</plugin> 

Ancak benim birim testler ... aşağıda
clean install -U -P cloudbees -P qa 

benim pom.xml SureFire yapılandırmadır ... Aşağıdaki hedefleri ve seçenekleri ile Jenkins kurmak aşağıdaki Maven iş var başarısız olursa, Jenkins konsolu çıkışı hala "YAPI BAŞARISI" yazıyor ve yapı hatasız bir şekilde başarısız olmak yerine "kararsız" olarak işaretlendi. Birim testlerinden herhangi biri başarısız olursa, yapmamın yapamayacağımı (kararsız hale gelmediği veya geçmediği) için Jenkins'deki (veya Maven'in ne olduğu belliyse) işleri nasıl yapılandırabilirim? Aşağıda

konsol çıkış

17:08:04 MyProjectOrganizationControllerTest.testRecoverFromError » IllegalState Failed to... 
17:08:04 MyProjectOrganizationControllerTest.testVerifyDistrictListPopulated » IllegalState 
17:08:04 MyProjectOrganizationControllerTest.testUpdateSchool » IllegalState Failed to loa... 
17:08:04 MyProjectOrganizationControllerTest.testDeleteSchool » IllegalState Failed to loa... 
17:08:04 MyProjectOrganizationControllerTest.testVerifyOrgListPopulatedPrivateSchoolOrgType » IllegalState 
17:08:04 MyProjectOrganizationControllerTest.testSubmitMultipleParams » IllegalState Faile... 
17:08:04 
17:08:04 Tests run: 155, Failures: 0, Errors: 154, Skipped: 1 
17:08:04 
17:08:04 [ERROR] There are test failures. 
17:08:04 
17:08:04 Please refer to /scratch/jenkins/workspace/MyProject/MyProject/target/surefire-reports for the individual test results. 
17:08:04 [JENKINS] Recording test results 
17:08:07 log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter). 
17:08:07 log4j:WARN Please initialize the log4j system properly. 
17:08:14 [INFO] 
17:08:14 [INFO] --- maven-war-plugin:2.4:war (default-war) @ MyProject --- 
17:08:15 [INFO] Packaging webapp 
17:08:15 [INFO] Assembling webapp [MyProject] in [/scratch/jenkins/workspace/MyProject/MyProject/target/MyProject] 
17:08:15 [INFO] Processing war project 
17:08:15 [INFO] Copying webapp resources [/scratch/jenkins/workspace/MyProject/MyProject/src/main/webapp] 
17:08:15 [INFO] Webapp assembled in [662 msecs] 
17:08:15 [INFO] Building war: /scratch/jenkins/workspace/MyProject/MyProject/target/MyProject.war 
17:08:20 [INFO] 
17:08:20 [INFO] --- maven-failsafe-plugin:2.17:integration-test (default) @ MyProject --- 
17:08:20 [JENKINS] Recording test results 
17:08:25 [INFO] 
17:08:25 [INFO] --- maven-failsafe-plugin:2.17:verify (default) @ MyProject --- 
17:08:25 [INFO] Failsafe report directory: /scratch/jenkins/workspace/MyProject/MyProject/target/failsafe-reports 
17:08:25 [JENKINS] Recording test results[INFO] 
17:08:25 [INFO] --- maven-install-plugin:2.4:install (default-install) @ MyProject --- 
17:08:25 
17:08:25 [INFO] Installing /scratch/jenkins/workspace/MyProject/MyProject/target/MyProject.war to /home/jenkins/.m2/repository/org/mainco/subco/MyProject/76.0.0-SNAPSHOT/MyProject-76.0.0-SNAPSHOT.war 
17:08:25 [INFO] Installing /scratch/jenkins/workspace/MyProject/MyProject/pom.xml to /home/jenkins/.m2/repository/org/mainco/subco/MyProject/76.0.0-SNAPSHOT/MyProject-76.0.0-SNAPSHOT.pom 
17:08:26 Started calculate disk usage of build 
17:08:26 Finished Calculation of disk usage of build in 0 seconds 
17:08:26 Started calculate disk usage of workspace 
17:08:26 Finished Calculation of disk usage of workspace in 0 seconds 
17:08:26 [INFO] ------------------------------------------------------------------------ 
17:08:26 [INFO] BUILD SUCCESS 
17:08:26 [INFO] ------------------------------------------------------------------------ 
17:08:26 [INFO] Total time: 11:00.616s 
17:08:26 [INFO] Finished at: Mon Feb 23 17:08:26 UTC 2015 
17:08:27 [INFO] Final Memory: 90M/414M 
17:08:27 [INFO] ------------------------------------------------------------------------ 
17:08:27 Waiting for Jenkins to finish collecting data 
17:08:28 [JENKINS] Archiving /scratch/jenkins/workspace/MyProject/MyProject/pom.xml to org.mainco.subco/MyProject/76.0.0-SNAPSHOT/MyProject-76.0.0-SNAPSHOT.pom 
17:08:28 [JENKINS] Archiving /scratch/jenkins/workspace/MyProject/MyProject/target/MyProject.war to org.mainco.subco/MyProject/76.0.0- SNAPSHOT/MyProject-76.0.0-SNAPSHOT.war 
17:08:31 channel stopped 
17:08:31 Started calculate disk usage of build 
17:08:31 Finished Calculation of disk usage of build in 0 seconds 
17:08:31 Started calculate disk usage of workspace 
17:08:31 Finished Calculation of disk usage of workspace in 0 seconds 
17:08:31 Finished: UNSTABLE 

cevap

38

için yapı bozmak için yapılandırın.

başvuru için Maven Surefire Plugin - surefire:test seçeneklerini inceleyin. yararlı olabilir

+2

Ancak bu bayrağı yanlış olarak belirtmek zorunda mıyız? Anlayışım gereği, bu daire belirtmezsek, varsayılan değer sadece "FALSE" şeklindedir. Lütfen öneriniz. Teşekkürler! – OverrockSTAR

+9

Jenkins, bu değeri varsayılan değer olarak true olarak belirtir. https://issues.jenkins-ci.org/browse/JENKINS-24655 – Torsten

+0

teşekkür göz at, haklısın. Benim için çalıştı! – OverrockSTAR

5

Kullanım Text Finder eklentisi diyor budur. There are test failures aramaya ve size Jenkins İş Oluştur bölümünde Gelişmiş butonuna tıklarsanız MAVEN_OPTS için -Dmaven.test.failure.ignore=false ekleyebilir FAILED

+2

Güzel kesmek ancak bir hack yok daha az. – Alexey

+0

Bir hack olmanın yanı sıra, bir UNSTABLE ürününü benim için FAILED yapısına indirmeyi başaramadığını tespit ettim. Belgelenen "yeniden sınıflandırma sadece sıfırın genel çıkış durumunu döndüren yapılar için geçerli" ile ilgili bir şey olabileceğini düşündüm. – bdeniker

0

başka kesmek kontrol etmek harika sonrası yapı ve set deney sonucunu kullanmaktır.

örn. Bu groovy, sonuç oluşturmaya başlar, açıklama oluşturmak için yararlı şeyler ekler ve hiçbir testin geçilmediğini veya başarısız olduğunu, ancak tüm testlerin atlanmaması durumunda UNSTABLE yapısını oluşturur.

def currentBuild = Thread.currentThread().executable 
// must be run groovy post-build action AFTER harvest junit xml if you use junit xml test results 
testResult1 = currentBuild.testResultAction 

currentBuild.setDescription(currentBuild.getDescription() + "\n pass:"+testResult1.result.passCount.toString()+", fail:"+testResult1.result.failCount.toString()+", skip:"+testResult1.result.skipCount.toString()) 

// if no pass, no fail all skip then set result to unstable 
if (testResult1.result.passCount == 0 && testResult1.result.failCount == 0 && testResult1.result.skipCount > 0) { 
    currentBuild.result = hudson.model.Result.UNSTABLE 
} 

currentBuild.setDescription(currentBuild.getDescription() + "\n" + currentBuild.result.toString()) 

def ws = manager.build.workspace.getRemote() 
myFile = new File(ws + "/VERSION.txt") 
desc = myFile.readLines() 
currentBuild.setDescription(currentBuild.getDescription() + "\n" + desc) 
İlgili konular