Continuous Integration dengan Hudson

Pada artikel sebelumnya, kita sudah membahas penggunaan Luntbuild dan CruiseControl untuk menerapkan Continuous Integration (CI). Kali ini, kita akan mencoba Hudson, aplikasi CI lain yang tersedia.

Hudson dapat diunduh dari websitenya. Setelah mengunduh, kita akan mendapatkan satu file *war. File ini dapat langsung dijalankan standalone dengan perintah:

java -jar hudson.war

Ataupun dideploy ke servlet engine favorit Anda, seperti Tomcat atau sejenisnya.

Setelah dideploy, kita bisa melihat tampilan awalnya melalui browser ke alamat http://localhost:8080 (untuk standalone) atau http://localhost:8080/hudson (bila dideploy ke servlet engine)

Keunggulan pertama Hudson adalah kemudahan setupnya. Segera setelah dijalankan (baik standalone maupun dideploy), kita bisa segera mengunjungi halaman depannya.

Hudson Welcome Page

Hal pertama yang saya lakukan adalah konfigurasi email. Bila ini tidak dilakukan, Hudson akan gagal mengirim email laporan hasil build.

Klik Manage Hudson di sebelah kiri atas. Layar konfigurasi akan muncul.

Manage Hudson

Selanjutnya, pilih System Configuration, lalu scroll ke bagian bawah untuk mengatur email.

Email Configuration

Setelah selesai, klik OK.

Bila Ant belum ada di PATH komputer Anda, jangan lupa untuk menyebutkan folder instalasi Ant di halaman ini.

Setelah selesai, kita bisa langsung mendaftarkan job. Klik tombol New Job di kiri atas.

Create New Job

Project saya menggunakan Ant biasa, tanpa Maven. Jadi saya pilih free-style. Klik OK.

Selanjutnya, kita konfigurasi repository project. Isikan nilai yang sesuai di bagian Source Code Management.

Configure Subversion

Segera setelah kursor meninggalkan field Repository URL (on blur), Hudson akan memeriksa URL yang kita berikan. Bila URL tersebut membutuhkan otentikasi, Hudson akan mengeluarkan pesan error dengan link untuk mengkonfigurasi username dan password.

Subversion Authentication

Isikan nilai yang sesuai. Seperti kita lihat, Hudson mendukung beberapa modus otentikasi.

Bagian selanjutnya adalah jadwal build atau trigger. Hudson menggunakan format yang mirip dengan Cron.

Build Schedule

Bila kita ingin melakukan build setiap jam, hanya pada hari kerja, entrinya adalah sebagai berikut:

1 * * * 1-5

Agar build berjalan setiap jam 1 dini hari, hari Senin dan Rabu, entrinya sebagai berikut:

0 * 1 * 1,3

Setelah jadwal, kita mengkonfigurasi proses build itu sendiri. Di project saya, build dilakukan oleh Ant. Kita bisa mendaftarkan target yang akan dieksekusi.

Build Method

Terakhir, kita mengkonfigurasi post build. Ini adalah kegiatan yang dilakukan setelah build sukses dijalankan. Pada tahap ini, saya ingin Hudson mempublikasikan *.jar atau *.war yang dihasilkan agar siap didonlod.

Post Build

Selain itu, saya juga bisa menyuruh Hudson untuk memproses hasil unit test JUnit. Hudson mengerti file XML yang dihasilkan JUnit dan TestNG.

Hudson juga bisa disuruh mengirim email apabila terjadi kegagalan build. Di sini biasanya saya isi dengan alamat mailing list developer.

Setelah selesai, klik Save.

Selanjutnya, kita tinggal melihat-lihat hasilnya.

Di halaman depan, kita bisa lihat rangkuman status tiap project.

Build Status

Klik salah satu project, dan lihat detailnya

Build Result

Di situ kita bisa lihat artifact yang sudah dipublish. Dari semua build yang sudah dilakukan, kita bisa lihat trendnya.

Trend of Build Time

Selain itu, kita juga bisa lihat hasil JUnit test.

JUnit Result

Kesimpulan akhir, berikut adalah perbandingan ketiga tools ini.

Tools Setup Tampilan Aksesoris Tag Otomatis

CruiseControl

Sulit, semua harus pakai XML

Kurang bagus, terlihat kuno

Lengkap

Bisa, menggunakan publisher

Luntbuild

Mudah, setup melalui web

Rumit dan kurang intuitif

Sangat sedikit

Bisa, dikonfigurasi melalui web

Hudson

Sangat Mudah

Bagus, intuitif, Web 2.0, AJAX

Eclipse plugin, Netbeans Plugin, Trac Plugin

Tidak bisa, harus manual

Demikianlah, semoga bermanfaat.