2011-09-20 34 views
6

tôi đã cấu hình sau cho công việc Jenkins của tôi: sạch đầu tiên và xây dựng các dự án maven, sau đó chạy các bài kiểm tra đơn vị và phân tích tĩnh: clean install sonar:sonar Vấn đề là installsonar:sonar từng chạy các bài kiểm tra đơn vị mà tăng gấp đôi hiệu quả thời gian xây dựng .Làm thế nào để chỉ chạy thử nghiệm đơn vị một lần khi chạy "cài đặt sạch maven" và Sonar?

Tôi đã sửa lỗi này bằng cách thay đổi clean install sonar:sonar thành clean install -DskipTests và chạy Sonar bằng plugin sonar Jenkins. Bây giờ các bài kiểm tra đơn vị chỉ chạy một lần và sonar cho thấy kết quả, nhưng Jenkins không biết về các bài kiểm tra nữa.

Tôi đoán là Jenkins chỉ đang xem thư mục báo cáo chắc chắn sau khi xây dựng, chứ không phải sau Sonar (hành động sau xây dựng).

Trả lời

11

Bạn chỉ có thể chạy clean install -DskipTests trước rồi thêm bước xây dựng maven thứ hai sonar:sonar. Các thử nghiệm (và phân tích sonar hoàn chỉnh) sẽ được chạy trong giai đoạn xây dựng, và kết quả chắc chắn có thể được thu thập bởi jenkins sau đó.

2

Như bạn đã nói, Sonar là một bước biên dịch bài. Sonar yêu cầu xây dựng phải hoàn thành và vượt qua tất cả các bài kiểm tra của nó trước khi nó có thể chạy, nếu không những điều nó không làm cho bất kỳ ý nghĩa.

Sonar chạy thử nghiệm với thiết bị đo đạc (cobertura nếu tôi nhớ chính xác), cung cấp độ bao phủ mã cho các thử nghiệm. Vì vậy, bạn cần phải cài đặt (hoặc ít nhất là biên dịch & kiểm tra) trước khi Sonar chạy, và sau đó Sonar chạy lại các thử nghiệm với thiết bị cho mục đích riêng của nó.

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