Có một vấn đề cơ bản về Tích hợp liên tục (CI) được nhân đôi hoàn toàn trong câu hỏi của bạn: Thực tiễn CI khó thực hiện và bảo vệ vì phần mềm máy chủ CI không tầm thường để thiết lập, cũng không tầm thường để đưa các dự án của bạn lên và chạy qua CI người phục vụ. Với điều này, thật khó để thấy được lợi ích của việc nắm lấy CI ở đâu.
Trước hết, CI là về cái nhìn sâu sắc và chất lượng. Good CI mang bạn đến gần hơn với dự án của bạn, cung cấp cho bạn thông tin phản hồi phù hợp về số liệu chất lượng, tài liệu, tuân thủ tiêu chuẩn mã hóa, v.v. Nó sẽ cung cấp cho bạn các công cụ để dễ dàng hình dung tất cả những điều này, và cho phép bạn nhanh chóng nhận ra và dễ dàng liên kết một tập hợp các thay đổi với một ảnh chụp nhanh cụ thể của tất cả các số liệu dự án này.
Nó không chỉ là về việc chạy thử nghiệm đơn vị. Không có gì! Điều này mang lại cho tôi chất lượng. CI chấp nhận lỗi, nó không tránh được hoặc vứt chúng đi. Những gì nó làm chỉ đơn giản là cung cấp cho bạn một công cụ để sửa lỗi sớm, thay vì sau này. Vì vậy, bạn không thực sự cam kết mã đã được thử nghiệm trước đó với máy chủ CI. Mặc dù bạn nên cố gắng cam kết mã sạch và không bị hỏng, nhưng thực tế bạn sử dụng máy chủ CI để tự động chạy trình xây dựng tích hợp thông qua mã của bạn và để nó đánh giá xem mọi thứ có đúng không. Nếu nó có, gọn gàng! Nếu không, không có vấn đề gì - thực tiễn CI tốt nói rằng ưu tiên tiếp theo của bạn chỉ là sửa chữa bất cứ điều gì đã bị hỏng. Mà, trong một máy chủ CI tốt, nên dễ dàng chỉ ra cho bạn.
Khi quy mô nhóm tăng lên, việc tích hợp mã của mọi người tự nhiên trở nên khó khăn hơn. Nhiệm vụ của một máy chủ CI tập trung là kiểm tra tất cả các phần tích hợp và loại bỏ gánh nặng đó khỏi các thành viên của nhóm. Vì vậy, bạn phải có mọi người cam kết sớm (và càng sạch càng tốt) và sau đó theo dõi trạng thái bản dựng (thường có thông báo được hình thành). Và một lần nữa, nếu một cái gì đó bị hỏng do cam kết của một số nhà phát triển, thì ngay lập tức nó trở thành khả năng đáp ứng của anh ta để khắc phục điều đó và khiến những bản dựng tự động đó trở lại trạng thái OK ngay lập tức.
Vì vậy, bạn thấy, theo tôi, mỗi dự án đều được hưởng lợi từ việc được tích hợp liên tục. Vấn đề là, cho đến bây giờ và do sự phức tạp khó hiểu từ mỗi máy chủ CI duy nhất mà tôi biết, mọi người thực sự chống lại các thực hành CI trong các dự án nhỏ hơn / đơn giản hơn. Bởi vì, thôi nào, mọi người có nhiều việc phải làm hơn là dành nhiều ngày để cấu hình một phần mềm cồng kềnh, quá phức tạp, kém chất lượng.
Tôi đã có cùng một vấn đề, và đó là điều khiến tôi phát triển Cintient trong thời gian rảnh kể từ khoảng một năm trước. Tiền đề của tôi là làm cho nó đơn giản để cài đặt, định cấu hình và sử dụng, và làm cho nó cung cấp trên các số liệu chất lượng mà mọi người khác đều thất bại hoặc kém hơn. Vì vậy, sau câu trả lời dài này xuất hiện đầu cắm không biết xấu hổ của tôi khi chỉ ra liên kết GitHub cho dự án (miễn phí và mã nguồn mở, natch). Nó cũng có một số ảnh chụp màn hình đẹp, rõ ràng. :-) https://github.com/matamouros/cintient
Hy vọng tôi đã giúp bạn.
(LƯU Ý: Được chỉnh sửa sau bình luận của Bryan Oakley, trên thực tế là tôi nên dành nhiều thời gian hơn để xây dựng một câu trả lời tốt hơn. Tôi cũng nghĩ rằng anh ấy đã đúng.)