Kami ingin menyiapkan layanan integrasi berkelanjutan (CI) untuk proyek kami. Layanan CI itu harus mengendalikan semua aspek kehidupan proyek, termasuk penyebaran.
Artinya, kami ingin agen CI di setiap iterasi mengambil sistem yang bersih (khususnya Ubuntu Server), menyebarkan proyek kami di sana dan menjalankan tes.
Kami mungkin akan menulis sendiri layanan CI, dari awal, karena ekosistem kami agak tidak biasa. Pertanyaannya adalah: bagaimana cara efektif menyediakan sistem batu tulis bersih untuk setiap iterasi CI?
Penyebaran proyek menginstal beberapa paket Debian, mengkonfigurasi beberapa situs nginx, dan juga menginstal beberapa paket dalam implementasi manajer paket khusus bahasa (LuaRocks), di seluruh sistem. Tidak ada yang lebih mengganggu dari itu (saya percaya). Jadi, lebih penting untuk dapat mengatur cepat sabak bersih (dalam satu menit pada perangkat keras modern, lebih cepat - lebih baik) daripada memastikan isolasi dan kebersihan mutlak.
Saya melihat dua cara bagaimana melakukan apa yang kita butuhkan:
- Entah mengatur semacam penjara (seperti lxc, mungkin).
- Atau instal beberapa mesin virtual yang dapat melakukan snapshot, dan gunakan itu.
Tetapi pada titik ini saya tidak memiliki cukup informasi untuk memutuskan.
Apa yang akan Anda sarankan? Ada opsi lain? Adakah nama alat khusus?
Catatan: Layanan CI akan dijalankan di dalam tamu Citrix XenServer. Solusi berbayar OK jika harga wajar. (Biasanya mereka tidak masuk akal dalam bidang ini.) Solusi CI jarak jauh tidak OK.
sumber
Lihatlah Jenkins . Ini memiliki plugin yang memungkinkan Anda untuk menjalankan membangun di mesin virtual di VMWare atau VirtualBox atau di Amazon / awan Eucalyptus . Untuk mesin virtual yang berjalan di cloud, Anda dapat menentukan skrip init tempat Anda dapat mengambil langkah-langkah seperti menginstal paket.
sumber
Saya akan menggunakan infrastruktur VM dan membuat templat dasar, atau menggunakan cloud seperti yang disarankan @LarsKotthoff. Mudah untuk memutarnya dengan cepat, dan Anda bisa yakin dari mana Anda memulainya.
Namun Anda pada akhirnya akan membutuhkan sesuatu di luar VM untuk mengatur apa yang sedang terjadi (setup mesin, dan memulai proses apa pun yang Anda inginkan pada mesin). Saya akan melihat Jenkins karena kemampuannya menangkap keluaran skrip untuk diperiksa nanti.
Meskipun Jenkins Dimulai sebagai server CI, banyak organisasi yang telah bekerja sama dengan saya sekarang menggunakannya untuk lebih dari itu, itu benar-benar adalah alat untuk memulai sesuatu (secara manual atau terjadwal) dan menangkap hasil, dan memvalidasi apa yang terjadi seperti yang diharapkan. Dan itu sangat fleksibel.
sumber
Jenkins telah disebutkan oleh beberapa orang. Anda dapat menggunakan skrip, tetapi Jenkins akan memberi Anda semua fleksibilitas yang sama dengan biaya overhead yang lebih rendah untuk menyatukannya.
Di sinilah gambar mesin virtual berguna. Anda dapat mengatur gambar bersih Anda dan membuat setiap mesin meluncurkan garpu itu. Gambar asli tidak pernah dimodifikasi, tetapi pengujian Anda tidak akan tahu bedanya. Anda pasti dapat menjalankan image bootstrap dalam waktu satu menit.
Jika Anda sedang mencari beberapa mesin sekaligus, periksa Nimbula (saya tidak tahu malu; saya bekerja untuk mereka). Untuk penyebaran yang lebih kecil, ini gratis dan memungkinkan Anda menggabungkan cloud pribadi Anda untuk pengujian ... atau apa pun. Antara Jenkins dan file orkestrasi, Anda dapat memutar server host, menguji klien, dan yang lainnya untuk secara otomatis menjalankan sepenuhnya kode pengujian tanpa interaksi apa pun.
sumber