Integrasi berkelanjutan dengan Hudson

Integrasi berkelanjutan telah menjadi praktik umum bagi tim yang berfokus pada memastikan kualitas kode di seluruh siklus pengembangan perangkat lunak. Dalam artikel ini, Nicholas Whitehead memperkenalkan Hudson, server CI open source yang populer. Pelajari cara menyiapkan server Hudson di lingkungan pengembangan aplikasi Anda (contoh diberikan untuk Windows XP dengan Tomcat 6 atau Ubuntu Linux dengan JBoss AS), dapatkan gambaran umum dari banyak opsi konfigurasi yang disediakan Hudson, kemudian terapkan pembuatan otomatis, uji, dan proses pelaporan untuk proyek contoh. Level: Pemula

Integrasi berkelanjutan (CI) adalah serangkaian praktik yang dimaksudkan untuk memudahkan dan menstabilkan proses pembuatan perangkat lunak. CI membantu tim pengembangan dengan tantangan berikut:

  • Otomatisasi pembuatan perangkat lunak : Dengan CI, Anda dapat meluncurkan proses pembuatan artefak perangkat lunak dengan menekan satu tombol, pada jadwal yang telah ditentukan, atau sebagai respons terhadap peristiwa tertentu. Jika Anda ingin membuat artefak perangkat lunak dari sumber, proses pembuatan Anda tidak terikat pada IDE, komputer, atau orang tertentu.
  • Verifikasi build otomatis berkelanjutan : Sistem CI dapat dikonfigurasi untuk terus mengeksekusi build saat kode sumber baru atau yang dimodifikasi diperiksa. Ini berarti bahwa sementara tim pengembang perangkat lunak memeriksa kode baru atau yang dimodifikasi secara berkala, sistem CI terus memverifikasi bahwa build tidak rusak oleh kode baru. Ini mengurangi kebutuhan pengembang untuk memeriksa satu sama lain tentang perubahan pada komponen yang saling bergantung.
  • Pengujian build otomatis berkelanjutan : Perpanjangan verifikasi build, proses ini memastikan bahwa kode baru atau yang dimodifikasi tidak menyebabkan rangkaian pengujian yang telah ditentukan sebelumnya pada artefak yang dibuat gagal. Dalam verifikasi dan pengujian build, kegagalan dapat memicu pemberitahuan kepada pihak yang berkepentingan, yang menunjukkan bahwa sebuah build atau beberapa pengujian telah gagal.
  • Otomatisasi prosedur pasca-pembuatan : Siklus hidup pembuatan artefak perangkat lunak mungkin juga memerlukan tugas tambahan yang dapat diotomatiskan setelah verifikasi dan pengujian pembuatan selesai, seperti membuat dokumentasi, mengemas perangkat lunak, dan menerapkan artefak ke lingkungan yang berjalan atau ke repositori perangkat lunak. Dengan cara ini, artefak dapat dengan cepat tersedia bagi pengguna.

Untuk mengimplementasikan server CI, Anda minimal memerlukan repositori kode sumber yang dapat diakses (dan kode sumber di dalamnya), sekumpulan skrip dan prosedur build, dan rangkaian pengujian untuk dijalankan terhadap artefak yang dibangun. Gambar 1 menguraikan struktur dasar sistem CI.

Komponen sistem mulai bekerja dalam urutan berikut:

  1. Pengembang memeriksa kode baru dan yang dimodifikasi ke dalam repositori kode sumber.
  2. Server CI membuat ruang kerja khusus untuk setiap proyek. Saat sebuah build baru diminta atau dijadwalkan, sumber diambil dari repositori ke dalam ruang kerja ini, tempat build tersebut kemudian dieksekusi.
  3. Server CI menjalankan proses pembangunan di ruang kerja yang baru dibuat atau disegarkan.
  4. Setelah build selesai, server CI dapat secara opsional menjalankan rangkaian pengujian yang ditentukan pada artefak baru. Jika build gagal, individu yang terdaftar dapat diberi tahu melalui email, pesan instan, atau metode lainnya.
  5. Jika build berhasil, artefak akan dikemas dan dikirim ke target penerapan (seperti server aplikasi) dan / atau disimpan sebagai artefak berversi baru di repositori perangkat lunak. Repositori ini dapat menjadi bagian dari server CI, atau dapat berupa repositori eksternal, seperti server file atau situs distribusi perangkat lunak seperti Java.net atau SourceForge. Repositori kode sumber dan repositori artefak dapat dipisahkan, dan sebenarnya mungkin untuk menggunakan beberapa server CI tanpa sistem kontrol sumber formal sama sekali.
  6. Server CI biasanya memiliki semacam konsol tempat proyek dapat dikonfigurasi dan di-debug, dan di mana permintaan dapat dikeluarkan untuk operasi seperti pembuatan langsung ad hoc, pembuatan laporan, atau pengambilan artefak yang dibangun.

Hudson: Server integrasi berkelanjutan

Integrasi berkelanjutan semakin populer selama beberapa tahun terakhir dan hari ini Anda memiliki beberapa server CI untuk dipilih, baik komersial maupun gratis. Saya pribadi telah menggunakan empat server CI sebelum seorang kolega merekomendasikan agar saya melihat Hudson. Saya langsung terkesan olehnya. Meskipun awalnya saya berasumsi bahwa Hudson tidak terkenal, survei di situs Java Power Tools menunjukkannya sebagai server CI yang paling banyak digunakan di antara responden, mengumpulkan (saat artikel ini ditulis) 37,8 persen dari semua suara.

SCM yang didukung

Hudson memiliki dukungan terintegrasi untuk Subversion langsung dari kotaknya, dan hanya sejumlah kecil konfigurasi yang diperlukan untuk berintegrasi dengan CVS, dengan asumsi klien CVS diinstal pada host Hudson. Beberapa solusi manajemen kode sumber (SCM) lainnya didukung dalam bentuk plugin Hudson. Pada saat penulisan ini, SCM berikut ini didukung:

  • Accurev
  • BitKeeper
  • ClearCase
  • Git
  • Lincah
  • Terpaksa
  • StartTeam
  • Server Team Foundation
  • Sumber Visual Aman
  • URL SCM (plugin SCM khusus yang memungkinkan penggunaan URL untuk SCM)

Di artikel ini, saya akan menggunakan Subversion dan repositori sumber di Java.net, jadi Anda tidak perlu menginstal plugin apa pun. (Selain itu, saya mengenal seseorang yang sedang mengerjakan plugin MKS SourceIntegrity Hudson. Jika Anda tertarik, kirimkan saya email.)

Hudson adalah produk sumber terbuka dan gratis yang dihosting di Java.net. Awalnya produk ini ditulis oleh Kohsuke Kawaguchi, staf insinyur di Sun Microsystems, yang mengumumkan rilisnya di blognya pada Februari 2005. Sejak itu Hudson memiliki sekitar 154 rilis.

Berikut adalah beberapa alasan mengapa saya menyukai Hudson, dan mengapa saya akan merekomendasikannya kepada Anda, kecuali ada persyaratan yang tidak biasa:

  • Dari semua produk CI yang saya gunakan, sejauh ini yang paling mudah untuk diinstal dan dikonfigurasi.
  • Antarmuka pengguna berbasis webnya sangat ramah, intuitif, dan responsif, dalam banyak kasus memberikan umpan balik langsung yang mendukung Ajax pada bidang konfigurasi individual.
  • Hudson berbasis Java (yang berguna jika Anda adalah pengembang Java) tetapi tidak terbatas pada pembuatan perangkat lunak berbasis Java.
  • Hudson memiliki komponen yang rapi dan menawarkan API ekstensibilitas yang terdefinisi dengan baik dan terdokumentasi dalam bentuk plugin Hudson. Hal ini pada gilirannya menyebabkan perpustakaan besar plugin Hudson yang memperluas fungsionalitas server; ini tersedia secara bebas dan dapat dipasang dari konsol Hudson.

Menginstal Hudson: Windows XP atau Ubuntu Linux

Untuk menggunakan Hudson, Anda memerlukan sistem kontrol sumber yang dapat diakses dan didukung (lihat sidebar "SCM yang Didukung" untuk listingan), sumber yang dapat dibuat menjadi artefak, dan skrip build yang berfungsi. Selain itu, semua yang Anda perlukan untuk menginstal dan mengkonfigurasi server Hudson yang berfungsi adalah instalasi Java, versi 1.5 atau lebih tinggi, dan file instalasi Hudson, yang datang dalam bentuk arsip Web Java EE (WAR). Anda dapat memulai server dengan sangat mudah menggunakan baris perintah berikut:

C:\hudson> java -jar hudson.war

Mungkin lebih umum, bagaimanapun, untuk menyebarkan Hudson ke wadah servlet Java yang didasarkan pada spesifikasi Servlet 2.4 dan JSP 2.0, seperti GlassFish, Tomcat, JBoss, atau Jetty. Di bagian selanjutnya, saya akan memandu Anda melalui dua skenario instalasi Hudson: satu menggunakan Tomcat 6 di Windows XP, dan satu lagi menggunakan JBoss 4.2.3 di Ubuntu Linux. (JBoss AS 5.0 dirilis setelah tanggal pengiriman artikel ini.)

Menginstal Hudson: Tomcat 6 dan Windows XP

Saya berasumsi bahwa Anda sudah menginstal Java versi 1.5 atau lebih tinggi pada mesin Windows XP Anda. Mengikuti langkah-langkah di bawah ini akan menginstal Tomcat 6.0.18 menggunakan Penginstal Layanan Windows, sehingga Hudson segera dimulai setelah Windows XP boot dan akan berjalan di latar belakang bahkan ketika tidak ada pengguna yang masuk. File unduhan untuk Tomcat adalah apache-tomcat- 6.0.18.exe, yang harus Anda jalankan untuk memulai penginstalan Tomcat.

Penginstalan Tomcat akan meminta Anda untuk memilih opsi penginstalan. Pastikan untuk memilih opsi Kustom dan kemudian Layanan , seperti yang ditunjukkan pada Gambar 2, sehingga Tomcat akan dijalankan sebagai layanan.

Selanjutnya, pilih direktori tempat Anda ingin menginstal Tomcat, seperti yang ditunjukkan pada Gambar 3. Saya sangat menyarankan Anda memilih direktori tanpa spasi. Anda bisa berterima kasih kepada saya nanti.

Sekarang penginstal akan menanyakan port mana yang ingin Anda dengarkan. Standarnya adalah port 8080, yang mungkin baik-baik saja; pastikan saja bahwa Anda tidak memiliki aplikasi lain yang menggunakan port itu. Jika Anda melakukannya, Tomcat tidak akan mulai dengan benar. Anda juga akan diminta untuk memberikan nama pengguna dan kata sandi administrator Tomcat. Semua ini ditunjukkan pada Gambar 4.

Penginstal kemudian akan meminta Anda untuk memberikan lokasi JRE Java yang telah Anda instal. Seperti yang Anda lihat pada Gambar 5, saya menggunakan Sun Java 1.6.0_07.

Setelah Anda mengklik Instal , penginstalan akan berjalan hingga selesai dan layanan akan mulai berjalan. Anda dapat memastikan bahwa Tomcat beroperasi dengan benar dengan mengarahkan browser Web Anda ke // localhost: 8080 (mengganti nama atau alamat IP yang sesuai untuk localhost jika Anda tidak menggunakan browser Web yang berjalan di komputer tempat Tomcat diinstal). Halaman Web yang ditampilkan akan terlihat seperti tangkapan layar pada Gambar 6.

Sekarang, untuk menginstal Hudson, salin file hudson.war ke subdirektori webapps dari direktori instalasi Tomcat Anda. Jika Anda menggunakan direktori instalasi yang sama seperti yang ditunjukkan pada Gambar 3, ini adalah C: \ Tomcat6 \ webapps. Tomcat akan menerapkan panas file WAR, tetapi hal termudah untuk dilakukan sekarang adalah memulai ulang Tomcat. Ada dua cara untuk melakukannya. Yang pertama adalah membuka shell DOS dan memasukkan perintah berikut:

 C:\Tomcat6>net stop Tomcat6 C:\Tomcat6>net start Tomcat6

The second option is to open the Services applet. This applet can be found in the Administrative Tools group in the Control Panel, which can be located by clicking the Start button on the Windows toolbar, then selecting Settings and then Control Panel. In the Services applet, locate the service named Apache Tomcat and then click the Restart button. This is illustrated in Figure 7.

Hudson should now be installed. You can verify this by pointing your Web browser to //localhost:8080/hudson. The main Hudson screen is shown in Figure 8.

That's all there is to it! If you're comfortable with an application development environment based on Windows XP and Tomcat, you're all set. If you prefer a system running JBoss and Ubuntu Linux, read on.

Installing Hudson: JBoss 4.2.3 on Ubuntu Linux 8.04 (Hardy Heron)

To install Sun Java 1.6 on Ubuntu, open a shell and execute the following command:

 sudo apt-get install sun-java6-jdk

When issuing a sudo command, you will be prompted to enter your password.

Note that there are several ways to install JBoss; in the technique outlined here, you'll create a dedicated jboss user. This is considered a best practice, and is preferable to installing JBoss in your own home directory. The procedure outlined here has been condensed from a useful description at the Ubuntu forums.

First, you need to download the JBoss 4.2.3.GA package. Look for the file named jboss-4.2.3.GA.zip.

Next, you will need to create a user, a home directory, and a group, all named jboss. The group is a convenience not explored in this article; it will allow you to extend JBoss privileges to other users on your Ubuntu server.

Listing 1 shows the commented commands to create the jboss home directory, user, and group, and then install the JBoss server. Some commands are prefixed with sudo because they are root-privileged commands.

Listing 1. Creating the jboss account and installing the server

echo Create the jboss group sudo groupadd jboss echo Create the jboss user, define bash as the user's default shell and /home/jboss as the home directory echo and make the user jboss part of the group jboss sudo useradd -s /bin/bash -d /home/jboss -m -g jboss jboss echo Copy the jboss-4.2.3.GA file to /home/jboss or download directly into that directory sudo mv jboss-4.2.3.GA /home/jboss echo Change the owner of the file to jboss sudo chown jboss:jboss /home/jboss/jboss-4.2.3.GA echo Log into the jboss account sudo su jboss echo Go to the jboss home directory cd ~ echo Unzip the file jboss-4.2.3.GA unzip jboss-4.2.3.GA echo Create a symbolic link "jboss" for "jboss-4.2.3.GA". echo This allows you to change JBoss versions with minimal changes ln -s jboss-4.2.3.GA jboss

If the unzip command is not already installed, enter the following command (while logged in as a sudo-enabled user) to install it:

Sudo apt-get install unzip

The JBoss server is now basically installed. You could start the server using the following command:

/home/jboss/jboss/bin/run.sh

Namun, dalam contoh ini, Anda akan menginstal skrip mulai otomatis sehingga layanan dimulai secara otomatis saat host dimulai. Unduhan JBoss hadir dengan tiga skrip int.d yang berbeda, tetapi masing-masing perlu diubah; Anda dapat mengunduh skrip jboss-init.sh, yang akan mengaktifkan mulai dan berhenti otomatis server. Kemudian jalankan perintah yang ditunjukkan pada Kode 2.