Saya belum pernah bekerja untuk organisasi yang sangat besar dan saya tidak pernah bekerja untuk perusahaan yang memiliki "Build Server".
Apa tujuan mereka? Mengapa para pengembang tidak membangun proyek di mesin lokal mereka, atau apakah mereka? Apakah beberapa proyek begitu besar sehingga dibutuhkan mesin yang lebih bertenaga untuk membuatnya dalam waktu yang wajar?
Satu-satunya tempat saya melihat Build Server berguna adalah untuk integrasi berkelanjutan dengan server build yang terus-menerus membangun apa yang dikomit ke repositori. Apakah saya baru saja tidak mengerjakan proyek yang cukup besar?
Seseorang, tolong beri tahu saya: Apa tujuan dari membangun server?
sumber
Membangun server penting karena beberapa alasan.
Mereka mengisolasi lingkungan Pengembang Code Monkey lokal mengatakan "Ini mengkompilasi di mesin saya " ketika tidak dapat dikompilasi di komputer Anda. Ini bisa berarti check-in tidak sinkron atau bisa juga berarti perpustakaan dependen tidak ada. Guci neraka tidak seburuk neraka .dll; Bagaimanapun, menggunakan server build adalah jaminan murah bahwa build Anda tidak akan gagal secara misterius atau mengemas perpustakaan yang salah secara tidak sengaja.
Mereka memfokuskan tugas yang terkait dengan build. Ini termasuk memperbarui tag build, membuat pengemasan distribusi apa pun, menjalankan pengujian otomatis, membuat dan mendistribusikan laporan build. Otomatisasi adalah kuncinya.
Mereka mengoordinasikan (didistribusikan) pembangunan. Kasus standar adalah saat banyak pengembang mengerjakan basis kode yang sama. Sistem kontrol versi adalah jantung dari pengembangan terdistribusi semacam ini tetapi tergantung pada alatnya, pengembang mungkin tidak banyak berinteraksi dengan kode satu sama lain. Daripada memaksa developer mengambil risiko build yang buruk atau khawatir tentang penggabungan kode yang terlalu agresif, rancang proses build di mana build otomatis dapat melihat kode yang sesuai dan memproses artefak build dengan cara yang dapat diprediksi. Dengan begitu, saat pengembang melakukan sesuatu dengan masalah, seperti tidak memeriksa ketergantungan file baru, mereka dapat diberi tahu dengan cepat. Melakukan ini di area bertahap memungkinkan Anda menandai kode yang telah dibangun sehingga pengembang tidak menarik kode yang akan merusak build lokal mereka. PVCS melakukan ini dengan cukup baik menggunakan ide kelompok promosi. Clearcase dapat melakukannya juga dengan menggunakan label tetapi akan membutuhkan lebih banyak proses administrasi daripada yang disediakan oleh banyak toko.
sumber
Apa tujuan mereka?
Ambil beban mesin pengembang, sediakan lingkungan yang stabil dan dapat direproduksi untuk build.
Mengapa para pengembang tidak membangun proyek di mesin lokal mereka, atau apakah mereka?
Karena dengan perangkat lunak yang kompleks, luar biasa banyak hal yang bisa salah ketika hanya "menyusun". masalah yang sebenarnya saya temui:
Kami mendapatkan peningkatan stabilitas yang luar biasa karena semua rilis publik dimulai dengan mendapatkan dari kontrol sumber ke folder kosong. Sebelumnya, ada banyak "masalah lucu" yang "hilang ketika Joe memberi saya DLL baru".
Apakah beberapa proyek begitu besar sehingga dibutuhkan mesin yang lebih bertenaga untuk membuatnya dalam waktu yang wajar?
Apa yang "masuk akal"? Jika saya menjalankan batch build di mesin lokal saya, ada banyak hal yang tidak dapat saya lakukan. Daripada membayar developer untuk menyelesaikan build, bayar IT untuk membeli mesin build yang sebenarnya.
Apakah saya baru saja tidak mengerjakan proyek yang cukup besar?
Ukuran memang salah satu faktor, tapi bukan satu-satunya.
sumber
Server build adalah konsep yang berbeda dengan server Integrasi Berkelanjutan. Server CI ada untuk membangun proyek Anda ketika ada perubahan. Sebaliknya, server Build ada untuk membangun proyek (biasanya rilis, terhadap revisi yang diberi tag) di lingkungan yang bersih. Ini memastikan bahwa tidak ada developer hacks, tweak, versi config / artefak yang tidak disetujui atau kode yang tidak mengikat yang membuatnya menjadi kode yang dirilis.
sumber
Server build digunakan untuk membuat kode semua orang ketika di-check-in. Kode Anda mungkin dikompilasi secara lokal, tetapi kemungkinan besar Anda tidak akan memiliki semua perubahan yang dibuat oleh orang lain sepanjang waktu.
sumber
Untuk menambahkan apa yang telah dikatakan:
Seorang mantan kolega bekerja di tim Microsoft Office dan memberi tahu saya bahwa pembuatan lengkap terkadang membutuhkan waktu 9 jam. Itu akan menyebalkan untuk melakukannya di mesin ANDA , bukan?
sumber
Anda perlu memiliki lingkungan "bersih" yang bebas dari artefak versi sebelumnya (dan perubahan konfigurasi) untuk memastikan bahwa build dan pengujian berfungsi dan tidak bergantung pada artefak. Cara efektif untuk mengisolasi adalah dengan membuat server build terpisah.
sumber
Sejauh ini saya setuju dengan jawaban dalam hal stabilitas, keterlacakan, dan kemampuan untuk direproduksi. (Banyak 'itu, kan?). HANYA pernah bekerja untuk perusahaan besar (Perawatan Kesehatan, Keuangan) dengan server build BANYAK, saya ingin menambahkan bahwa ini juga tentang keamanan. Pernah nonton film Office Space? Jika pengembang yang tidak puas membangun aplikasi perbankan di mesin lokalnya dan tidak ada orang lain yang melihatnya atau mengujinya ... BOOM. Superman III.
sumber
Mesin ini digunakan untuk beberapa alasan, semuanya berusaha membantu Anda menyediakan produk yang unggul.
Salah satu kegunaannya adalah untuk mensimulasikan konfigurasi pengguna akhir yang khas. Produk tersebut mungkin berfungsi di komputer Anda, dengan semua alat pengembangan dan pustaka yang disiapkan, tetapi pengguna akhir kemungkinan besar tidak akan memiliki konfigurasi yang sama seperti Anda. Dalam hal ini, pengembang lain juga tidak akan memiliki pengaturan yang sama persis dengan Anda. Jika Anda memiliki jalur hardcode di suatu tempat dalam kode Anda, itu mungkin akan berfungsi pada mesin Anda, tetapi ketika Dev El O'per mencoba membuat kode yang sama, itu tidak akan berfungsi.
Juga dapat digunakan untuk memantau siapa yang terakhir kali merusak produk, dengan pembaruan apa, dan di mana produk mengalami kemunduran. Setiap kali kode baru dicentang, server build akan membangunnya, dan jika gagal, jelas bahwa ada sesuatu yang salah dan pengguna yang melakukan terakhir adalah kesalahannya.
sumber
Untuk kualitas yang konsisten dan agar build 'dari mesin Anda' menemukan kesalahan lingkungan dan agar file apa pun yang Anda lupa check in ke kontrol sumber juga muncul sebagai kesalahan build.
Saya juga menggunakannya untuk membuat penginstal karena ini membutuhkan banyak waktu untuk dilakukan di desktop dengan penandatanganan kode, dll.
sumber
Kami menggunakan satu sehingga kami tahu bahwa kotak produksi / pengujian memiliki pustaka yang sama dan versi pustaka yang terinstal seperti yang tersedia di server build.
sumber
Ini tentang manajemen dan pengujian untuk kami. Dengan server build, kami selalu tahu bahwa kami dapat membangun baris "trunk" utama kami dari kontrol versi. Kita bisa membuat master install dengan satu klik dan mempublikasikannya ke web. Kami dapat menjalankan semua pengujian unit kami setiap kali kode diperiksa untuk memastikannya berfungsi. Dengan mengumpulkan semua tugas ini ke dalam satu mesin, akan lebih mudah untuk melakukannya dengan benar berulang kali.
sumber
Anda benar bahwa pengembang dapat membuat mesin mereka sendiri.
Tetapi ini adalah beberapa hal yang dibeli oleh server build kami, dan kami bukanlah pembuat build yang canggih:
sumber
Mungkin aku satu-satunya ...
Saya pikir semua orang setuju bahwa seseorang harus melakukannya
Tetapi tidak ada yang peduli tentang versi yang dibuat secara otomatis. Ketika ada sesuatu yang rusak dalam pembuatan otomatis, tetapi sekarang tidak lagi - siapa yang peduli? Ini sedang dalam proses. Seseorang memperbaikinya.
Saat Anda ingin membuat versi rilis, Anda menjalankan build dari repositori. Dan aku cukup yakin Anda ingin tag versi dalam repositori pada yang waktu dan tidak setiap enam jam ketika server tidak bekerja itu.
Jadi, mungkin "server build" hanyalah istilah yang salah dan sebenarnya "server pengujian berkelanjutan". Kalau tidak, itu terdengar sangat tidak berguna.
sumber
Server build memberi Anda semacam opini kedua tentang kode Anda. Saat Anda check in, kode tersebut akan diperiksa. Jika berhasil, kodenya memiliki kualitas minimum.
sumber
Selain itu, ingatlah bahwa bahasa tingkat rendah membutuhkan waktu lebih lama untuk dikompilasi daripada bahasa tingkat tinggi. Sangat mudah untuk berpikir, "Baiklah, proyek .Net saya terkompilasi dalam beberapa detik! Apa masalahnya?" Beberapa waktu yang lalu saya harus mengotak-atik beberapa kode C dan saya lupa berapa lama lagi untuk mengkompilasi.
sumber
Server build digunakan untuk menjadwalkan tugas kompilasi (misalnya build nightly) dari project besar yang biasanya terletak di repositori yang terkadang memerlukan waktu lebih dari beberapa jam.
sumber
Server build juga memberi Anda dasar untuk escrow, yang dapat menangkap semua bagian yang diperlukan untuk mereproduksi build jika orang lain mungkin memiliki hak untuk mengambil kepemilikan.
sumber