Keuntungan apa yang ditawarkan alat integrasi berkelanjutan pada proyek solo?

18

Jika Anda melakukan proyek solo - apakah Anda akan menggunakan alat CI untuk membangun dari repositori? Saya telah menggunakan Hudson dan Cruise Control di lingkungan tim, di mana sangat penting untuk membangun begitu ada orang yang memeriksa.

Saya pikir nilai kontrol versi masih jelas, tetapi apakah saya perlu membangun setelah setiap komit, mengingat saya hanya akan membangun di mesin lokal saya, dan tidak ada orang lain yang berkomitmen?

iftheshoefritz
sumber

Jawaban:

12

Yah saya berencana untuk menggunakan alat integrasi berkelanjutan pada proyek dan saya adalah pengembang unik. Kebutuhan datang karena

  1. Salah satu tujuannya adalah untuk membuatnya lintas-platform, dan memiliki alat integrasi membantu Anda secara implisit (dasar) memeriksa aplikasi Anda di beberapa platform setelah Anda mendorong perubahan Anda di repositori integrasi (atau yang pusat, atau apa pun yang akan digunakan sebagai otoritatif).
  2. Proyek ini dibangun untuk jangka panjang jadi saya perlu bekerja dengan tim nanti. Saya tidak berencana merekrut siapa pun hingga 2012 sehingga hal integrasi berkelanjutan dapat menunggu saat ini, sampai 1. menjadi prioritas.

Selain persiapan lintas platform dan kerja tim, saya tidak melihat perlunya. Hal utama adalah memiliki beberapa jenis perangkat lunak kontrol sumber dan memiliki beberapa repositori untuk menyimpan cadangan. Itu akan membantu Anda menyiapkan alat membangun di sekitarnya saat diperlukan.

Tentang waktu pembuatan, saya menggunakan Mercurial dan menyiapkan repositori integrasi yang bukan repositori kerja tim. Jadi, dorong perubahan dalam repo kerja tim hingga saya merasa sudah saatnya membuat sistem integrasi mencoba membangun. Lalu saya mendorong dari repo kerja tim ke repo integrasi dan itu akan memicu pembangunan. Kemudian saya juga menambahkan skrip yang akan menarik repo kerja tim dalam repo integrasi satu kali setiap hari.

Di sini saya berasumsi bahwa saya bekerja hampir sepanjang hari di proyek saya, tetapi itu tidak selalu benar. Anda harus menetapkan waktu pembuatan yang relatif terhadap seberapa sering Anda perlu membangun. Di perusahaan game tempat saya bekerja sebelumnya, kami menggunakan CruiseControle dan itu membangun build penuh setiap jam. Kami juga dapat memaksa bangunan kapan pun kami inginkan jika diperlukan.

Untuk proyek rumah, satu kali sehari mungkin sudah "sering". Persyaratan utama adalah memungkinkan pengguna untuk memaksa meluncurkan build.

Klaim
sumber
20

Setelah kontemplasi singkat saya akan menyarankan bahwa mungkin bahkan lebih penting bagi pengembang solo daripada tim.

Pada tingkat paling dasar, server CI menunjukkan bahwa Anda dapat membangun aplikasi Anda dari awal dari sumber yang berkomitmen - dikombinasikan dengan serangkaian tes yang layak, itu harus menunjukkan bahwa Anda dapat membangun dan menjalankan dari awal.

Karena salah satu hal yang saya coba lakukan adalah memastikan bahwa build saya menyertakan paket yang dapat digunakan, Anda juga tahu bahwa Anda bisa mendapatkan sesuatu untuk digunakan (bersih dan dari negara / versi yang dikenal).

Bahkan sekarang, ketika Anda melakukan File | Proyek Baru Anda mungkin harus memasukkan membuat atau menambahkan ke repositori Anda dan mengatur skrip membangun CI Anda dan pengaturan penyebaran (bahkan jika itu hanya untuk zip tumpukan barang untuk penyebaran xcopy)


Addendum (2016) - saat ini sistem CI saya juga akan menjadi bagian integral dari proses penerapan saya, sehingga nilainya telah meningkat dan saya benar-benar tidak akan menjalankan proyek yang dapat dikirim tanpa itu. Penggunaan tombol otomatis membutuhkan banyak tekanan dari proses dan dalam beberapa cara, bentuk atau bentuk server yang dibangun merupakan bagian integral dari itu.

Murph
sumber
10
+1 sebagai pengembang solo, Anda lebih berisiko mengalami masalah 'bekerja pada mesin saya'
jk.
Downvotes tanpa alasan tidak membantu - apa yang salah dengan hal di atas?
Murph
+1, saya menghadapi situasi yang sangat mirip di sini - banyak proyek yang cukup kecil untuk dikelola masing-masing hanya oleh satu pengembang, dan satu proyek besar yang dikelola oleh tim. Untuk proyek-proyek kecil, kita sering menghadapi masalah seseorang lupa memeriksa file kode sumber tertentu. Untuk proyek besar ini tidak pernah menjadi masalah, karena jika salah satu tim lupa untuk menambahkan file baru ke kontrol sumber, yang lain akan segera mengeluh tentang hal ini. Saya harus menambahkan kita akan menginstal server CI bulan depan - dimulai dengan proyek kecil!
Doc Brown
7

Ketika saya satu-satunya yang melakukan, saya hanya membangun dan menguji sebelum benar-benar melakukan. Saya biasanya menggunakan target makefile seperti:

make sense

Yang mengkonfigurasi, membangun, menjalankan semua tes (Valgrind sadar), menjalankan serat, dll. Seperti yang saya tahu saya akan menjadi satu-satunya yang mendorong, saya tidak benar-benar membutuhkan kekuatan seperti Hudson.

Selain itu, dalam lingkungan di mana Anda memiliki beberapa cabang memberi makan repositori utama, jika semua orang mengikuti tarikan selalu sebelum Anda melakukan atau mendorong, server CI mungkin sedikit lebih dari membunuh. Aturan yang ditulis dengan baik bahwa pembuat apa pun yang rusak membangun terakhir membeli pizza pada hari Jumat biasanya membuat semuanya berjalan sangat lancar :)

Jika masuk ke situasi di mana proyek jelas dibagi menjadi sub sistem yang memiliki pemimpin mereka sendiri, Anda benar - benar perlu merenungkan menggunakan sesuatu seperti Hudson. Seseorang mungkin menguji secara lokal, kalah dalam balapan dengan sub sistem lainnya dan akhirnya mendorong sesuatu yang beracun.

Juga, jika Anda mempertahankan garpu proyek yang bergerak cepat (misalnya, set tambalan Anda sendiri ke kernel Linux), Anda harus benar-benar mempertimbangkan menggunakan sesuatu seperti Hudson, meskipun Anda 'solo' pada proyek itu. Hal ini terutama berlaku jika Anda melakukan branch / re-base langsung dari mainline.

Pos Tim
sumber
11
Pastikan untuk mengingat kode target Anda, jika tidak, Anda akan mendapatkannya make: don't know how to make sense. Stop. Argh!
Alan Pearce
@Alan - Mereka pergi dan merusak semua kesenangan kami di versi selanjutnya (setidaknya GNU make) .. sekarang Anda hanya mendapatkan "make: *** Tidak ada aturan untuk membuat target` akal '. Berhenti. "
Tim Post
1
Sarankan Anda beralih ke FreeBSD. :)
Alan Pearce
1

Saya tidak akan mengatakan ini hanya bonus yang bagus, saya akan mengatakan itu penting untuk rekayasa perangkat lunak berkualitas tinggi bagi kita artis solo di luar sana. Sebagian besar dari kita akan membiarkan standar kualitas mereka tergelincir sedikit jika terburu-buru jika mereka berpikir cukup mudah untuk memperbaikinya nanti. Jika Anda mengkomit perangkat lunak dalam keadaan itu, Anda pada dasarnya memiliki basis kode yang tidak berharga yang tersimpan dalam kontrol sumber Anda.

Jika dipatuhi dengan benar (yaitu, Anda tidak melewatkan tes dan Anda memastikan itu membangun setiap kali Anda melakukan) CI memaksa Anda untuk mematuhi standar kualitas yang lebih tinggi daripada yang Anda lakukan jika Anda hanya ingin melakukannya.

Onno
sumber
Saya berhasil menjalankan aplikasi database in-house yang sukses tanpa overhead server CI. Dibutuhkan sedikit disiplin dalam beberapa bidang, tetapi kurang dari pengaturan semua hal.
wobbily_col
0

Penting jika Anda ingin mengurangi waktu tunggu Anda untuk melihat apakah semuanya masih berjalan dengan baik. Meskipun Anda bisa mendapatkan IDE Anda untuk mengompilasi barang-barang untuk Anda segera setelah Anda simpan, itu tidak secara otomatis menjalankan tes unit, jadi saya memiliki server CI saya menjalankan tes unit dan melaporkan laporan cakupan kasus dan analisis kualitas lain dari kode saya segera setelah Saya mendorongnya.

Satu-satunya pemicu yang harus saya lakukan adalah mendorong perubahan saya saat ini ke kontrol versi dan saya dapat kembali ke pengkodean. Dan sementara saya berpikir tentang pengkodean, sistem CI sibuk berputar-putar melakukan laporan kualitas panjang lebar yang saya akan melihat sekaligus ketika otak saya pergi dalam jeda.

Saya memiliki mesin VMWare terpisah pada laptop yang sama yang melakukan build untuk kode yang saya push. Untuk melakukan ini saya hanya mendapatkan gambar VMWare Turnkey Linux dan menginstal jenkins menggunakan apt-get dan melakukan beberapa perubahan konfigurasi kecil.

Archimedes Trajano
sumber