2012-10-09 30 views
6

Tôi hiện đang phát triển một plugin đơn giản để truy xuất kết quả từ quá trình xây dựng Jenkins. Tôi đang mở rộng Trình thông báo và sử dụng build.getResults() để nhận thông tin. Tuy nhiên, khi tôi tải lên plugin của mình, tôi không thể đặt nó làm tác vụ sau khi xây dựng.
Khi tôi chạy các bản dựng của mình, chúng sẽ phá vỡ trên build.getResults() vì tôi đang cố gắng lấy kết quả trong khi bản dựng vẫn đang chạy.

Tôi có thể làm gì để có được kết quả xây dựng đúng cách?
Phát triển trình cắm thêm xây dựng Jenkins

Trả lời

1

Vì điều này nghe rất đơn giản, bạn có chắc chắn bạn cần một plugin không? Hãy xem xét sử dụng một số Groovy Postbuild step thay thế; chúng dễ viết hơn nhiều. Có một số ví dụ sử dụng tốt trong liên kết. Nếu bạn quyết định bạn thực sự cần một plugin, hãy xem liệu bạn có thể mở rộng một trình cắm hiện có thay vì viết của riêng bạn hay không; nó là một cách dễ dàng hơn để hiểu được các ins and outs của Jenkins plugin bằng văn bản.

+0

Tôi đã sử dụng plugin Groovy Postbuild để gọi một dịch vụ web bảo mật (được Coverity Connect 6.5.3 hiển thị) và đã gặp sự cố với toàn bộ JVP của Jenkins chạy trên PermGen (bản cập nhật JDK 1.7 15). Cho đến nay, plugin Groovy Postbuild đã hoạt động tốt để gọi các dịch vụ REST của SonarQube. Tóm lại, hãy cẩn thận rằng plugin Groovy Postbuild có thể có giới hạn. – buzz3791

+0

Câu trả lời này sẽ cung cấp các ví dụ về cách thực hiện điều này, trước khi đề xuất sử dụng plugin hiện tại. –

+0

@JohnZeller có rất nhiều ví dụ sử dụng trong liên kết tôi đã cung cấp, nhưng tôi đã chỉnh sửa câu trả lời để làm rõ hơn. –

2

Điều tốt nhất là xem existing plugins which use Notifier extension point (nhấp để mở rộng triển khai danh sách plugin).

Kiểm tra xem bạn có lớp mô tả (bên trong) mô tả hay không, cũng như config.jelly. Ngoài ra, hãy kiểm tra nhật ký jenkins.out và jenkins.err cho bất kỳ ngoại lệ nào (chẳng hạn như config.jelly không đúng định dạng).

Chỉnh sửa: Thực ra, Notifier lớp con của plugin này trông thật sự đơn giản như Notifiers đi: https://wiki.jenkins-ci.org/display/JENKINS/The+Continuous+Integration+Game+plugin, đặc biệt xem GamePublisher.java và tương ứng config.jelly, và nó GameDescriptor.java, mà đã được thực hiện một lớp bên ngoài đầy đủ (thường mô tả là lớp bên trong) của nó. Ngoài ra, nếu bạn muốn các tùy chọn trong cấu hình toàn cầu của Jenkins, bạn cần global.jelly, nhưng nếu bạn không có các tùy chọn như vậy, đó là thứ bạn có thể bỏ qua (không giống như config.jelly, mà bạn phải có cho Trình thông báo ngay cả khi nó trống rỗng, như ở đây).

Như một lưu ý chung, nó có thể thực sự gây phiền nhiễu khi mọi thứ không hoạt động, và bạn không nhận được bất kỳ lỗi nào, công cụ của bạn chỉ đơn giản là không được hiển thị bởi Jenkins ... Nếu bạn chỉ muốn có được những thứ để làm việc cho bạn, bằng cách sử dụng bước xây dựng Groovy có thể dễ dàng hơn, nhưng nếu bạn muốn làm mọi thứ để làm việc cho người khác, thì làm một plugin đầy đủ phong nha sẽ giảm yêu cầu hỗ trợ.

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