Di perusahaan saya, sudah umum untuk tidak melakukan build perantara untuk memeriksa bagaimana setiap cabang fitur / perbaikan bug digabungkan dalam dev. Hanya ada build harian, yang selalu mendapatkan banyak tes gagal dan build error. Saya telah diberitahu bahwa membangun untuk setiap penggabungan untuk lebih dari 1000 pengembang tidak masuk akal.
Jadi saya mencari bagaimana CI diatur dalam perusahaan yang memiliki banyak pengembang atau lebih (Microsoft, Facebook), dan tidak menemukan apa pun. Mungkin, orang dalam bisa memberitahuku?
Jawaban:
Ini, pada dasarnya, masalah penskalaan. Anda memisahkan pekerjaan Anda menjadi beberapa modul, yang dapat berupa proyek yang berbeda dan / atau fungsi yang berbeda dari produk Anda.
Anda akan memiliki tim yang mencakup set modul tersebut. Masing-masing tim akan memiliki siklus CI diatur untuk lingkup mereka, dan hanya setelah siklus masing-masing akan berlalu, kode akan didorong untuk menguasai repo, di mana siklus master CI akan dijalankan.
Siklus master CI kemungkinan akan berbeda dari siklus CI tingkat tim dalam aspek ini:
Yang harus Anda lakukan dengan pendekatan ini adalah memberikan dorongan otomatis dari repo lokal ke repo pusat setelah siklus CI lokal berlalu, jangan sampai pengembang Anda menghabiskan banyak waktu untuk mendorong kode ke repo pusat.
sumber
Selain apa yang dikatakan @Vladimir_Stokic, pada beberapa tim (saya punya ~ 150 pengembang), kami membangun lebih sering daripada setiap 24 jam. Setiap kali komit terjadi, kami memulai timer 5 menit. Setelah 5 menit habis, semua komit yang terjadi selama interval 5 menit digabungkan dan dibangun. Membangun biasanya membangun tambahan. Kami memiliki pembuat terpisah yang menjalankan pengujian unit untuk setiap bangunan yang terjadi. Setelah build selesai, jika ada komitmen lagi selama build (yang memakan waktu antara 1 dan 45 menit tergantung pada apa yang diubah), setiap perubahan yang tertunda dibangun, dan seterusnya. Kami juga memiliki bangunan malam (bersih, penuh), tetapi bangunan yang terjadi pada setiap komit (secara kasar) memberi tahu kami dengan sangat cepat apakah ada pengujian yang gagal.
sumber