pada saat sesuatu berkomitmen untuk dikuasai
Saya biasanya mengatur CI saya untuk dijalankan di setiap komit tunggal. Cabang tidak digabung menjadi master sampai cabang diuji. Jika Anda mengandalkan menjalankan tes pada master, maka itu membuka jendela untuk membangun yang akan rusak.
Menjalankan tes pada mesin CI adalah tentang hasil yang dapat direproduksi. Karena server CI memiliki lingkungan bersih yang diketahui berasal dari VCS Anda, Anda tahu bahwa hasil pengujiannya benar. Saat berjalan secara lokal, Anda bisa lupa untuk mengkomit beberapa kode yang diperlukan agar mereka lulus, atau memiliki kode yang tidak dikomit yang membuat mereka lulus ketika mereka seharusnya gagal.
Ini juga dapat menghemat waktu pengembang dengan menjalankan berbagai suite secara paralel, terutama jika beberapa tes lambat, multi-menit yang tidak mungkin dijalankan secara lokal setelah setiap perubahan.
Pada pekerjaan saya saat ini, penyebaran produksi kami terjaga keamanannya pada CI melewati semua tes. Script deploy akan mencegah penyebaran kecuali mereka lewat. Ini membuat mustahil untuk secara tidak sengaja lupa menjalankannya.
CI yang menjadi bagian dari alur kerja juga membebani pengembang. Sebagai pengembang, apakah Anda biasanya menjalankan linter, analisa statis, uji unit, cakupan kode, dan uji integrasi untuk setiap perubahan tunggal? CI dapat, sepenuhnya otomatis dan tanpa perlu memikirkannya - mengurangi keletihan keputusan.