Bagaimana integrasi berkesinambungan diselenggarakan di perusahaan besar?

11

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?

Megamozg
sumber
@gnat Apakah Anda memadai? Bagaimana ini terkait? Saya meminta pengalaman orang dalam, dan menunjuk perusahaan hanya sebagai contoh. Saya tidak meminta dukungan pelanggan.
Megamozg
11
@gnat Saya tidak melihat bagaimana ini terkait dengan itu. Megamozg: CI diatur oleh modul proyek, tidak ada modul dengan 1000 pengembang. Jadi jika ada terlalu banyak orang, kurangi proyek / modul Anda di bagian yang lebih kecil.
Walfrat
@ Walfrat itu benar-benar terkait. Situs ini bukan untuk membuat survei / jajak pendapat orang dalam perusahaan besar tentang bagaimana perusahaan mereka melakukan berbagai hal. Jika ada yang ingin tahu tentang hal-hal seperti itu, mereka harus menggunakan saluran dukungan dari perusahaan-perusahaan ini
agas
@gnat Saya benar-benar tidak melihat bagaimana tautan yang Anda berikan diterapkan, terutama dengan komentar yang Anda berikan sebagai tanggapan terhadap Walfrat. Berdasarkan komentar itu, IMHO ini akan menjadi tautan yang tepat (bagian tentang pertanyaan jenis polling) softwareengineering.meta.stackexchange.com/a/6490
Newtopian

Jawaban:

12

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:

  • Siklus CI tingkat tim tidak harus membangun kode seluruh perusahaan, hanya modul-modul yang menjadi tanggung jawab mereka dan modul-modul dependen. Jika ada dua modul yang sepenuhnya independen dan di tim yang berbeda, mereka tidak akan menjadi bagian dari siklus CI tim lain.
  • Siklus CI tingkat tim dapat memiliki tes otomatis yang lebih rinci daripada siklus master CI. Siklus Master CI akan memiliki tes kewarasan dan tes regresi yang akan, tergantung pada ukuran solusi master, dijalankan setiap hari atau bahkan setiap minggu, karena tes ini kadang-kadang bisa memakan waktu lebih dari 24 jam untuk dilaksanakan.

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.

Vladimir Stokic
sumber
7

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.

pengguna1118321
sumber