2011-06-21 65 views
5

Tôi có một công việc trong Jenkins được điều hành hàng đêm. Các nhiệm vụ được thực hiện trong quá trình xây dựng này là: biên dịch, kiểm tra đơn vị, kiểm thử tích hợp (chỉ là các kiểm tra JUnit dài hơn "kiểm thử đơn vị thực") và phân tích chất lượng Sonar.Tại sao công việc Sonar Jenkins của tôi không bao giờ trở nên không ổn định, ngay cả với các lỗi kiểm tra?

Khi thử nghiệm không thành công, công việc được coi là thành công và do đó, không có email nào được gửi để thông báo lỗi này.

Lệnh Maven được sử dụng là mvn clean install sonar:sonar. Loại bỏ mục tiêu install không thay đổi bất cứ điều gì.

Điều gì là sai với điều đó?

Có cách nào để có được hành vi mong đợi (ví dụ: xây dựng không ổn định khi thử nghiệm không thành công) chỉ với một công việc Jenkins hoặc tôi tạo hai công việc, một cho toàn bộ "phần Java" (biên dịch, kiểm tra đơn vị và thử nghiệm tích hợp) và một cho phân tích Sonar?

Chúng tôi đang sử dụng Maven 2.0.9, Java 1.6, Sonar 2.8, Jenkins 1.413.

+0

là bạn định nghĩa -Dmaven.test.failure.ignore = true ở bất kỳ đâu? – oers

+0

@oers Không hề. Lệnh Maven chính xác là 'mvn -U -up-sạch cài đặt -Dsonar.branch = XXX - cài đặt C: \ xxx \ jenkins-setting.xml' – romaintaz

+0

Jenkins dường như thiết lập thuộc tính đó: http://stackoverflow.com/câu hỏi/1004912/hudson-build-successful-with-unit-test-failures – oers

Trả lời

0

Jenkins dường như để thiết lập tài sản đó: Hudson build successful with unit test failures

Với tài sản (-Dmaven.test.failure.ignore = false), khi có một thử nghiệm thất bại, xây dựng dừng.

Có một jenkins plugin cho sonar: Đó dường như để phân tích ngay cả khi thử nghiệm thất bại: http://jira.codehaus.org/browse/SONARPLUGINS-461

Trong cài đặt sonar của tôi, tôi chạy thử nghiệm riêng biệt từ sonar và tái sử dụng các junit/báo cáo chắc chắn hơn. Bằng cách đó tôi có thể kiểm soát các xét nghiệm độc lập với sonar.

+0

Tôi thực sự không chắc chắn rằng tôi chỉ có thể có một công việc Jenkins để làm mọi thứ. Đặt thuộc tính '-Dmaven.test.failure.ignore' thành' false' sẽ không giúp ích gì cho tôi, vì nó sẽ dừng việc biên dịch và thử nghiệm trên mô-đun đầu tiên có lỗi. Và khi tôi làm việc với dự án đa mô-đun, nó sẽ không hoạt động trên các mô-đun khác ... – romaintaz

+1

Cuối cùng tôi đã thành công trong việc sử dụng plugin Sonar Jenkins (có lỗi với Maven 2.0.9 và plugin này, bỏ qua '- -settings' tham số) và trạng thái bây giờ được xử lý một cách chính xác bởi Jenkins. – romaintaz

Các vấn đề liên quan