Ada satu masalah mendasar tentang Continuous Integration (CI) yang benar-benar tercermin dalam pertanyaan Anda: Praktik CI sulit diimplementasikan dan dipertahankan karena perangkat lunak server CI tidak sepele untuk pengaturan, juga tidak sepele untuk mendapatkan proyek Anda dan menjalankan melalui CI server. Dengan ini, menjadi sulit untuk benar-benar melihat di mana keuntungan dalam merangkul CI sama sekali.
Pertama-tama, CI adalah tentang wawasan dan kualitas. CI yang baik membawa Anda lebih dekat ke proyek Anda, memberi Anda umpan balik yang tepat tentang metrik kualitas, dokumentasi, kepatuhan standar pengkodean, dll. Ini akan memberi Anda alat untuk dengan mudah memvisualisasikan semua ini, dan memungkinkan Anda untuk sekilas mengenali dan dengan mudah kaitkan satu set perubahan dengan cuplikan spesifik dari semua metrik proyek ini.
Ini bukan hanya tentang menjalankan unit test. Tidak semuanya! Yang membawa saya ke kualitas. CI mencakup kesalahan, itu tidak menghindarinya atau membuangnya. Apa yang dilakukannya cukup sederhananya memberi Anda alat untuk melakukan kesalahan sejak awal, alih-alih nanti. Jadi Anda tidak benar-benar melakukan kode yang diuji sebelumnya ke server CI. Meskipun Anda harus berusaha untuk melakukan kode yang bersih dan tidak rusak, Anda benar-benar menggunakan server CI untuk secara otomatis menjalankan pembangun integrasi secara otomatis melalui kode Anda dan membuatnya menilai jika semuanya keluar dengan benar. Jika sudah, rapi! Jika tidak, tidak ada masalah - praktik CI yang baik menyatakan bahwa prioritas Anda berikutnya adalah memperbaiki apa saja yang telah rusak. Yang, di server CI yang baik, harus dengan mudah ditunjukkan untuk Anda.
Ketika ukuran tim meningkat, integrasi kode setiap orang secara alami menjadi lebih sulit. Seharusnya tugas server CI terpusat untuk menguji semua bagian yang terintegrasi dan mengambil beban itu dari anggota tim. Jadi, Anda harus meminta semua orang melakukan komitmen lebih awal (dan sebersih mungkin) dan kemudian memantau status build (biasanya ada notifikasi yang dilibatkan). Dan lagi, jika ada sesuatu yang rusak karena komitmen beberapa pengembang, itu segera menjadi tanggung jawabnya untuk memperbaikinya dan membuat bangunan otomatis itu kembali ke status OK segera.
Jadi Anda tahu, menurut saya setiap proyek mendapat manfaat dari Terintegrasi Secara Berkelanjutan. Masalahnya adalah, sampai sekarang dan karena kompleksitas yang membingungkan dari setiap server CI tunggal yang saya tahu, orang benar-benar menangkis praktik CI pada proyek yang lebih kecil / sederhana. Karena, ayolah, orang-orang memiliki hal-hal yang lebih baik untuk dilakukan daripada menghabiskan waktu berhari-hari mengonfigurasi perangkat lunak yang jelek, terlalu rumit, pengirimannya rendah, dan kembung.
Saya memiliki masalah yang sama persis, dan itulah yang membuat saya mengembangkan Cintient di waktu luang saya sejak sekitar setahun yang lalu sekarang. Premis saya adalah membuatnya mudah untuk menginstal, mengonfigurasi, dan menggunakan, dan membuatnya memberikan metrik kualitas yang setiap orang gagal atau underdelivers. Jadi, setelah jawaban yang panjang ini datang plug saya yang tidak tahu malu menunjukkan tautan GitHub untuk proyek (yang gratis dan open-source, natch). Ini juga memiliki beberapa tangkapan layar yang bagus. :-) https://github.com/matamouros/cintient
Semoga saya membantu Anda.
(CATATAN: Diedit setelah komentar Bryan Oakley, pada kenyataan bahwa saya seharusnya mengambil lebih banyak waktu untuk membangun jawaban yang lebih baik. Saya juga berpikir dia benar.)