Tôi hiện đang sử dụng jenkins / hudson để tích hợp liên tục một dự án lớn chủ yếu là C ++. Chúng tôi có các dự án riêng biệt cho thân cây và mọi chi nhánh. Ngoài ra, có một số dự án liên quan cho mã Java, nhưng thiết lập cho những dự án đó khá cơ bản ngay bây giờ (mặc dù vậy, chúng tôi có thể thực hiện thêm sau). Các dự án C ++ làm như sau:
- Xây dựng mọi thứ với các tùy chọn để định cấu hình lại, xây dựng hoàn chỉnh hoặc sử dụng thanh toán mới
- Tùy chọn xây dựng và chạy tất cả các thử nghiệm
- Tùy chọn chạy tất cả các bài kiểm tra bằng cách sử dụng ghi nhớ của Valgrind
- Chạy cppcheck
- Tạo tài liệu doxygen
- Báo cáo xuất bản: kiểm tra đơn vị, valgrind, cppcheck, cảnh báo trình biên dịch, SLOC, các tác vụ đang mở và phạm vi mã (sử dụng gcov, gcovr và plugin cobertura)
- Triển khai mã hàng đêm hoặc theo yêu cầu vào môi trường thử nghiệm và kho lưu trữ gói
Mọi thứ đều có thể định cấu hình cho các bản dựng tự động và tùy chọn cho các bản dựng theo yêu cầu. Bên dưới, có một tập lệnh bash kiểm soát phần lớn điều này, điều này phụ thuộc nhiều hơn vào hệ thống xây dựng của chúng tôi, sử dụng chế độ tự động hóa và autoconf cùng với các tập lệnh bash tùy chỉnh.
Chúng tôi bắt đầu sử dụng Hudson (vào thời điểm đó) vì đó là thứ mà những người Java đang sử dụng và chúng tôi chỉ muốn các bản dựng hàng đêm. Kể từ đó, chúng tôi đã thêm rất nhiều và tiếp tục thêm nhiều hơn nữa. Về mặt nào đó, Hudson rất tuyệt, nhưng chắc chắn không phải là lý tưởng.
Tôi đã xem xét các giải pháp khác và giải pháp duy nhất có vẻ như nó có thể thay thế là buildbot. Buildbot sẽ tốt hơn cho tình huống này? Khoản đầu tư có xứng đáng không vì chúng tôi đã sử dụng Hudson? Tại sao?
CHỈNH SỬA : Có người hỏi tại sao tôi không thấy Hudson / Jenkins là người lý tưởng. Câu trả lời ngắn gọn là mọi thứ đều có thể được cải thiện. Tôi chỉ đơn giản là tự hỏi liệu Jenkins có phải là giải pháp tốt nhất hiện tại cho trường hợp sử dụng của tôi hay không hay liệu có thứ gì đó tốt hơn (buildbot?) Sẽ dễ bảo trì hơn về lâu dài ngay cả khi các yêu cầu mới xuất hiện.