Công cụ:
Jenkins ver. 1.470
Maven 2
SubversionJenkins một phần Xây dựng/Modular Xây dựng trên Commit Hook
Môi trường
Giả sử xây dựng của tôi có một số dự án A-D. Biểu đồ phụ thuộc tồn tại như được hiển thị. Đó là để nói: B phụ thuộc vào các lớp trong A, C phụ thuộc vào các lớp trong B, D phụ thuộc vào các lớp trong A. Chúng ta tạo các jenkins xây dựng sao cho chúng gọi các bản xây dựng phụ thuộc vào chúng như một hành động hậu xây dựng.
Một
| -> B -> C
| -> D
Mỗi đêm, chúng tôi kích hoạt đầy đủ xây dựng trong Jenkins (A xây dựng, gây nên B (gây nên C), gây nên D). Điều này được thực hiện dễ dàng đủ bằng cách yêu cầu A xây dựng hàng đêm và các thác còn lại.
Vấn đề
Tuy nhiên, trên một cam kết, chúng tôi muốn xây dựng các dự án đã được cam kết một lần.
Trường hợp 1: Chúng tôi thăm dò ý kiến các kho lưu trữ (hoặc sử dụng commit hooks, nó làm cho không có sự khác biệt) và thấy rằng có là một cam kết đến B, sau đó B sẽ xây dựng và C sẽ xây dựng. Thành công!
Trường hợp 2: Chúng tôi thăm dò ý kiến các kho lưu trữ và thấy rằng B và C đã được cam kết trong một cam kết, sau đó Jenkins sẽ cố gắng xây dựng B (kích hoạt một xây dựng của C), và xây dựng C (một xây dựng thứ hai). Thất bại. Xem điều gì xảy ra? C được xây dựng hai lần, chiếm thời gian xây dựng quý giá. Giữ bản dựng nhanh!
Có ai biết một cách để chỉ kích hoạt các dự án cao nhất trong từng xây dựng đường ống dẫn đã cam kết?
Tôi cho rằng một giải pháp sẽ là một cái móc SVN phức tạp mà xác định dự án cao nhất trong mỗi đường ống ...
- Tình huống 3: Cam kết B C và D trong một cam kết. Móc SVN tìm C phụ thuộc vào B. Móc gọi các liên kết cụ thể của dự án để bắt đầu xây dựng cho B và D.
Cạm bẫy: Móc treo SVN rất phức tạp. Phải bảo trì đường ống trong móc SVN.
Tôi cảm thấy đây là vấn đề mà người khác đã gặp phải. Có một plugin Jenkins giúp với điều này?
Trong trường hợp 2, các dự án Jenkins C & B đang xem xét cùng một dự án svn? – thekbb