2013-01-02 31 views
12

Tôi có một plugin trong Jenkins hoạt động một máy chủ từ xa thông qua phần còn lại.
Làm cách nào để gửi yêu cầu cuối cùng đến máy chủ khi hủy xây dựng? Vì vậy, duyên dáng hoàn thành công việc của các plugin?Gracefully dừng một bước xây dựng (plugin) trên xây dựng hủy bỏ

Tham chiếu duy nhất cho 'Trình tự hủy bỏ' mà tôi tìm thấy là this. Điều này khiến tôi nghĩ rằng quy trình này rất thô và tôi không thể bắt được tín hiệu trước khi nó kết thúc con (plugin của tôi).

Trả lời

2

Tôi có nhu cầu tương tự, mà tôi đã giải quyết với PostBuildScript Plugin.

Tôi chọn chạy một bước xây dựng, nhưng bạn có thể chạy một số tùy chọn khác. Rất dễ sử dụng. Tôi có một tập lệnh mà tôi phải chạy bất kể phiên bản đã kết thúc như thế nào (thành công, thất bại hoặc hủy bỏ). Đó là công việc tốt cho tôi.

Tôi hy vọng điều này sẽ hữu ích.

+0

Tôi thực sự thất vọng vì đây là câu trả lời duy nhất. Cảm ơn vì những nỗ lực, tôi sẽ thưởng cho bạn tiền thưởng sớm nếu không có người gọi cuối cùng đến. – bldoron

2

Khi công trình bị hủy bỏ, một số InterruptedException bị ném. Bạn có thể bắt nó giống như bất kỳ ngoại lệ nào khác, và không chỉ thoát ra một cách duyên dáng mà còn ngăn chặn việc hủy bỏ, nếu bạn muốn.

Trong phương pháp boolean perform() của bạn, thiết lập một tuyên bố

try { 
... // Whatever your plugin does 
} 
catch (InterruptedException e) { 
    // Code to handle build being aborted. 
} 

, mà sẽ xử lý bất kỳ hủy bỏ xảy ra trong khi xây dựng các bước của bạn đang được chạy. Trong tuyên bố catch, bạn có thể ném lại một lần nữa InterruptedException để tiếp tục hủy quá trình xây dựng hoặc chỉ trả lại và để cho bản dựng tiếp tục.

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