Tôi đang giải quyết vấn đề mở rộng quy mô CI tại công ty của mình và đồng thời cố gắng tìm ra cách tiếp cận nào để thực hiện khi nói đến CI và nhiều chi nhánh. Có một câu hỏi tương tự tại stackoverflow, Nhiều nhánh tính năng và tích hợp liên tục . Tôi đã bắt đầu một cái mới vì tôi muốn thảo luận nhiều hơn và đưa ra một số phân tích trong câu hỏi.
Cho đến nay, tôi thấy rằng có 2 cách tiếp cận chính mà tôi có thể thực hiện (hoặc có thể một số cách khác ???).
- Nhiều nhóm công việc (nói về Jenkins / Hudson tại đây) cho mỗi nhánh
- Viết công cụ để quản lý các công việc phụ
- Tạo / sửa đổi / xóa hàng loạt Công việc
- Cài đặt tùy chỉnh cho từng công việc trên mỗi nhánh (url SCM, bản sao quản lý dep)
- Một số ví dụ về những người giải quyết vấn đề này bằng các công cụ shell, ant scripts và Jenkins CLI. Xem:
- http://jenkins.361315.n4.nabble.com/Multiple-bragets-best-practice-td2306578.html
- http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-braffs-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729. html
- http://jenkins.361315.n4.nabble.com/Parallel-development-with-bragets-td1013013.html
- Định cấu hình hoặc tạo công việc hudson tự động
- Sẽ gây ra nhiều tải hơn trên cụm CI của bạn
- Chu kỳ phản hồi dành cho nhà phát triển chậm lại (nếu cơ sở hạ tầng không thể xử lý tải mới)
- Viết công cụ để quản lý các công việc phụ
- Nhiều nhóm công việc trên 2 nhánh (nhà phát triển và ổn định)
- Quản lý hai bộ theo cách thủ công (nếu bạn thay đổi giới hạn của một công việc thì hãy đảm bảo thay đổi trong nhánh khác)
- PITA nhưng ít nhất phải quản lý rất ít
- Các chi nhánh bổ sung khác sẽ không nhận được bộ thử nghiệm đầy đủ trước khi chúng được chuyển sang nhà phát triển
- Các nhà phát triển không hài lòng. Tại sao một nhà phát triển nên quan tâm đến các vấn đề mở rộng CI. Anh ấy có một yêu cầu đơn giản, khi tôi rẽ nhánh, tôi muốn kiểm tra mã của mình. Đơn giản.
- Quản lý hai bộ theo cách thủ công (nếu bạn thay đổi giới hạn của một công việc thì hãy đảm bảo thay đổi trong nhánh khác)
Vì vậy, có vẻ như nếu tôi muốn cung cấp cho các nhà phát triển CI cho các nhánh tùy chỉnh của riêng họ, tôi cần công cụ đặc biệt cho Jenkins (API hoặc shellcripts hoặc thứ gì đó?) Và xử lý mở rộng quy mô. Hoặc tôi có thể yêu cầu họ hợp nhất thường xuyên hơn với DEV và sống mà không có CI trên các nhánh tùy chỉnh. Bạn sẽ chọn cái nào hoặc có những lựa chọn nào khác?