Rilis build vs build nightly

13

Solusi tipikal adalah membuat CI (Continuous Integration) build berjalan di server build: Ini akan menganalisis kode sumber, membuat build (dalam debug) dan menjalankan tes, mengukur cakupan tes, dll.

Sekarang, tipe build lain yang biasanya dikenal adalah "Nightly build": melakukan hal-hal lambat seperti membuat dokumen kode, membuat paket setup, menyebarkan ke lingkungan pengujian, dan menjalankan tes otomatis (asap atau penerimaan) terhadap lingkungan pengujian, dll.

Sekarang, pertanyaannya:

  • Apakah lebih baik memiliki "Rilis build" terpisah ketiga sebagai build rilis?
  • Atau apakah "Nightly build" dalam mode rilis dan menggunakannya sebagai rilis?

Apa yang Anda gunakan di perusahaan Anda?

(Rilis rilis juga harus menambahkan semacam tag ke kontrol sumber versi produk potensial.)

Tuomas Hietanen
sumber

Jawaban:

13

Kasus untuk membuat rilis rilis sama dengan membangun malam adalah: Anda ingin menguji hal-hal yang persis sama dengan apa yang Anda rilis . Anda tidak ingin menemukan bug dalam produksi yang mungkin sudah terdeteksi di pengujian dev.

Perbedaan antara rilis dan build malam:

  • build malam dijalankan secara otomatis, setiap malam, sementara rilis build harus dijalankan dengan tangan pada titik waktu tertentu
  • rilis build idealnya harus memberi tag / cabang kode sumber, dan mungkin menggunakan artefak build di repo pusat (misalnya saat menggunakan Maven)

Perbedaan-perbedaan ini dalam praktiknya merupakan beberapa opsi tambahan di sebagian besar sistem manajemen bangun yang saya tahu. Untuk meminimalkan kemungkinan kesalahan manusia, ini dapat disimpan misalnya dalam file batch / skrip yang hanya mengambil parameter yang diperlukan (dan memvalidasinya).

Péter Török
sumber
7

Yah saya ingin rilis build sedekat mungkin dalam proses malam hari mungkin! Idealnya persis sama tetapi dengan tag.

Masalahnya adalah jika rilis Anda dibuat dan setiap malam tidak sama, ada kemungkinan bahwa apa pun yang berbeda dapat menutupi masalah (atau membuat melacaknya menjadi lebih sulit).

Zachary K
sumber
3

Saya akan memiliki satu proses build tunggal, yang akan membangun semuanya setiap check-in yang dijalankan oleh layanan CI. Itu akan menjadi debug dan rilis build.

Memiliki dua atau tiga proses terpisah hanya meminta mereka untuk mulai berubah secara acak tanpa didokumentasikan, dan itu tidak akan lama sebelum seseorang menemukan diri mereka harus melakukan 15 langkah untuk setiap rilis potensial untuk membuatnya siap untuk keluar dari pintu.

Apa namanya
sumber
Perusahaan saya sangat seperti ini dengan 4 proses pembangunan yang berbeda. Kita perlu mengubah itu.
Brandon
2

Satu hal yang saya ingin lakukan adalah meletakkan build nightly dalam mode rilis daripada mode debug. Dengan kerangka kerja logging seperti log4net menggantikan System.Diagnostics.Debug perbedaan utama antara mode Release dan Debug adalah masa hidup objek dan optimisasi kode.

Kecuali Anda benar-benar akan melampirkan debugger ke build malam Anda maka saya sarankan melakukan ini juga.

Proses yang kami ikuti adalah bahwa build malam berjalan setiap malam dan jika itu berhasil maka kami dapat menggunakan build yang sama ke server kami yang lain (tidak ada pembangunan kembali, cukup ambil installer yang dikemas dan jalankan). Jika kami memiliki masalah dengan build malam maka kami memeriksa perubahannya di cabang, dan menjalankan build 'malam' di cabang itu di siang hari. Tes kemudian dapat dijalankan kembali.

Matthew Steeples
sumber