2015-02-23 25 views
38

Tôi đang sử dụng Jenkins, Maven 3.1 và Java 1.6. Tôi có công việc Maven sau thành lập năm Jenkins với các mục tiêu và các tùy chọn sau đây ...Làm thế nào để làm cho Jenkins xây dựng thất bại khi kiểm tra đơn vị Maven thất bại?

clean install -U -P cloudbees -P qa 

dưới đây là pom.xml của tôi cấu hình chắc chắn hơn ...

<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> 

Tuy nhiên, khi kiểm tra đơn vị của tôi thất bại, đầu ra giao diện điều khiển Jenkins vẫn nói "BUILD SUCCESS" và bản dựng được đánh dấu là "không ổn định" thay vì lỗi hoàn toàn. Làm thế nào để cấu hình mọi thứ trong Jenkins (hoặc Maven nếu nó là thứ mà nó trở thành) để xây dựng của tôi không thành công (không trở nên không ổn định hoặc vượt qua) nếu bất kỳ kiểm tra đơn vị nào không thành công?

Dưới đây là những gì giao diện điều khiển đầu ra nói

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 

Trả lời

38

Bạn có thể thêm -Dmaven.test.failure.ignore=false đến MAVEN_OPTS nếu bạn bấm vào nút Advanced trong phần xây dựng của Jenkins việc của bạn.

Xem các tùy chọn Maven Surefire Plugin - surefire:test để tham khảo.

+2

Nhưng chúng ta thực sự phải chỉ định cờ này là sai? Theo hiểu biết của tôi nếu chúng tôi không chỉ định giá trị mặc định này thì giá trị mặc định là "FALSE". Xin đề nghị. Cảm ơn! – OverrockSTAR

+9

Jenkins chỉ định giá trị này thành true theo mặc định. Hãy xem https://issues.jenkins-ci.org/browse/JENKINS-24655 – Torsten

+0

Cảm ơn, bạn đã chính xác. Nó làm việc cho tôi! – OverrockSTAR

5

Sử dụng Text Finder plugin. Cấu hình nó để tìm kiếm There are test failures và hạ cấp xây dựng để FAILED

+2

Đòn tấn công tuyệt vời, nhưng không thể hack được. – Alexey

+0

Ngoài việc bị hack, tôi thấy nó không thể hạ cấp UNSTABLE thành một bản dựng FAILED cho tôi. Tôi nghĩ rằng nó có thể là một cái gì đó để làm với các tài liệu "phân loại lại chỉ áp dụng cho xây dựng mà trả về một trạng thái thoát tổng thể của số không". – bdeniker

0

Một bản hack khác có thể hữu ích là sử dụng công cụ hậu xây dựng để kiểm tra và thiết lập kết quả kiểm tra.

ví dụ: groovy này được xây dựng kết quả, nối thêm những thứ hữu ích để xây dựng mô tả và đặt kết quả xây dựng thành UNSTABLE trong trường hợp không có vượt qua hoặc thất bại nhưng tất cả các bài kiểm tra đều bị bỏ qua.

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) 
Các vấn đề liên quan