2012-06-15 15 views
7

Theo tôi biết, tính năng "Kết quả kiểm tra tổng hợp hạ lưu" không hoạt động như mong đợi (và rất khó tìm tài liệu hữu ích). Tôi muốn để đạt được chức năng rất giống nhau:Giải pháp thay thế: Tổng hợp kết quả kiểm tra hạ lưu

Job Xây dựng gây nên việc T1, T2 song song (nơi T1 không FindBugs, T2 làm PMD).

Kịch bản 1: Ngay sau khi T1T2 là xong (mà tôi có thể đạt được bằng cách sử dụng "Tham gia" plugin) Tôi muốn thu thập các hiện vật (T1 /findbugs.xml và T2 /pmd.xml). Sau đó, chúng được phân tích và thống kê tốt đẹp được tạo ra.

Kịch bản 2 (Tôi thích video này nhiều hơn): Giống như kịch bản 1, nhưng các phân tích được thực hiện như một phần của T1T2 (song song!). Ngay sau khi T1T2 hoàn tất, kết quả phân tích được kết hợp thành thống kê tốt đẹp.

Câu hỏi của tôi: Đối với kịch bản 1 Tôi không biết làm thế nào để tham khảo các dự án hạ T1T2. Tôi có thể sử dụng công trình thành công cuối cùng, nhưng điều đó có vẻ kỳ lạ khi xem xét nhiều công việc song song.

Đối với kịch bản 2 Tôi không biết cách nhập dữ liệu cần thiết cho plugin FindBugs/PMD/Checkstyle/SLOCcount/... để biểu đồ tương ứng (cũng xuất hiện) bên ngoài T1/* T2 *.

Cảm ơn, Carsten

+2

Tôi nghĩ câu hỏi này có thể được khái quát hóa: Làm thế nào tôi có thể chuyển giao kiến ​​thức từ các công việc sau (đã hoàn thành) sang công việc trực tiếp của nó đã kích hoạt các công việc này (hoặc cho người kế nhiệm trực tiếp của công việc này)? Theo như tôi biết, Jenkins tập trung vào một hướng khác (nhận thông tin từ các công việc ngược dòng). –

Trả lời

8

Hai bổ sung vào bài malenkiy_scot của:

  1. Bạn không thực sự cần một kịch bản cho bước 3 trong mô tả: Các "sao chép đồ tạo tác từ một dự án khác" xây dựng bước cho phép xác định các công việc nguồn bao gồm các thông số đã .

    Ví dụ, sử dụng ký hiệu của cha, nó có thể sao chép hiện vật từ việc thực hiện đúng công việc D bằng cách sử dụng D/PARENT_ID=EXPECTED_VALUE làm "tên dự án".

  2. Thay vì ghép thủ công $JOB_NAME$BUILD_ID bạn có thể sử dụng số $BUILD_TAG được xác định trước (về cơ bản giống nhau). Xem https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables để có danh sách đầy đủ các biến môi trường chuẩn.

+0

Có thể ai đó giải nén những gì đang xảy ra ở đây với cú pháp 'D/PARENT_ID = EXPECTED_VALUE' không? Bất kỳ giúp đỡ nhiều đánh giá cao. Tôi muốn gắn kết điều này trong các bản dựng cơ sở trừu tượng hơn là làm cho chúng rõ ràng trong các trẻ em cụ thể. –

10

Dưới đây là một phác thảo cho một kịch bản có phần đơn giản hơn, nhưng tôi nghĩ rằng bạn có thể dễ dàng khái quát nó cho trường hợp của bạn nhiều công ăn việc làm ở hạ lưu. Bí quyết là sử dụng các tham số "đánh dấu" trong các công việc hạ lưu.

Hãy để P là công việc chính và D là một công việc hạ lưu.

  1. Một instance (xây dựng) của P gọi D qua Parameterized Trigger Plugin qua một bước xây dựng (không như một bước sau xây dựng) và chờ đợi 's D để kết thúc. Cùng với các thông số khác, P đi để D một tham số - chúng ta hãy gọi nó PARENT_ID - dựa trên xây dựng của P 's BUILD_ID.
  2. D thực hiện các kiểm tra và lưu trữ chúng dưới dạng tạo tác (cùng với báo cáo jUnit - nếu có).
  3. P sau đó thực hiện một Python bên ngoài (hoặc nội bộ Groovy) kịch bản mà thấy việc xây dựng phù hợp D qua PARENT_ID (bạn lặp qua xây dựng của D và kiểm tra giá trị của PARENT_ID tham số). Tập lệnh sau đó sao chép các tạo tác từ D đến PP xuất bản chúng.

Nếu sử dụng Python (đó là những gì tôi làm) - hãy sử dụng Python JenkinsAPI wrapper. Nếu sử dụng Groovy - hãy sử dụng Groovy Plugin và chạy tập lệnh của bạn dưới dạng tập lệnh hệ thống. Sau đó, bạn có thể truy cập Jenkins qua số Java API.

+0

Cảm ơn bạn đã giúp! Bây giờ tôi có dữ liệu từ T1 và T2 trong dự án tham gia của tôi (dự án bắt đầu ngay sau khi T1 và T2 kết thúc). –

+0

Hôm nay tôi nhận thấy rằng BUILD_ID không phải là duy nhất cho một công việc (hai công việc bắt đầu trong cùng một giây nhận được cùng BUILD_ID). Bất kỳ ý tưởng làm thế nào để thực sự có ID duy nhất? –

+1

Kết hợp nó với * JOB_NAME * (ví dụ: $ {JOB_NAME} _ $ {BUILD_ID}) –

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