Yah saya berencana untuk menggunakan alat integrasi berkelanjutan pada proyek dan saya adalah pengembang unik. Kebutuhan datang karena
- 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).
- 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.
Ketika saya satu-satunya yang melakukan, saya hanya membangun dan menguji sebelum benar-benar melakukan. Saya biasanya menggunakan target makefile seperti:
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.
sumber
make: don't know how to make sense. Stop
. Argh!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.
sumber
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.
sumber