Coding4ever’s Blog

Just coding… coding… and coding… because coding should be fun :)

Membangun Server CI (Continuous Integration) Di Windows Untuk Platform .NET Menggunakan Jenkins Bagian #1

| Comments

Melanjutkan pembahasan tentang Server CI (Continuous Integration), di mana persiapan awal sudah saya bahas di postingan saya yang berjudul “Persiapan Membangun Server CI (Continuous Integration) di Windows untuk Platform .NET” bagian satu dan dua.

Continuous Integration, untuk selanjutnya kita sebut CI saja, merupakan salah satu kegiatan untuk meningkatkan produktivitas dalam pengembangan aplikasi di mana seluruh hasil kerja (source code) dari masing-masing developer digabungkan (push) ke dalam satu wadah (server repository source code). Bisa sekali sehari, bisa juga beberapa kali dalam sehari. Setiap penggabungan source code akan diverifikasi secara otomatis oleh server CI, yang memungkinkan tim untuk mendeteksi secara dini jika ada masalah/konflik/error pada saat penggabungan source code.

Setelah penggabungan hasil kerja (source code) selesai, server CI otomatis akan melakukan proses build untuk memastikan tidak ada kode yang merusak/membuat proses build gagal. Jadi semakin cepat kegagalan build ini diketahui semakin cepat pula kita meresponnya. Dan jika proses build-nya berhasil akan dilanjutkan dengan proses deploy. Selain itu server CI juga bisa dikonfigurasi untuk melakukan proses lain seperti menjalankan unit testing, integration testing dan testing otomatis lainnya.

Sebagai .NET developer kita sudah biasa melakukan proses build dengan menekan tombol F5 (Start Debugging) atau Ctrl+F5 (Start Without Debugging) baik pada waktu development atau perbaikan bug. Sedangkan untuk contoh deploy anggap saja seperti kita membuat paket installer yang akan didistribusikan ke komputer/server klien. Nah dengan menggunakan CI semua proses ini bisa dilakukan secara otomatis dan terpusat, sehingga kita mempunyai arsip hasil build dan deploy dari waktu ke waktu. Jadi untuk mencari file setup/paket installer terakhir enggak usah lagi nanya ke developer karena bisa langsung kita download dari server CI-nya.

Proses build ini selain bisa dibuat otomatis setiap kita mem-push source code ke server repository bisa juga kita buatkan jadwalnya, misal pas jam makan siang atau jam pulang kantor. Jadi di kantor dibuat kesepakatan/aturan klo ada yang merusak build pas jam makan siang enggak boleh makan siang sampai proses build-nya berhasil atau yang merusak build pas jam pulang kantor enggak boleh pulang sampai proses build-nya berhasil :-D

Jadi dengan menggunakan CI, alur kerja kita lebih kurang seperti berikut :

  • Menulis kode, build dan tes di komputer masing-masing (seperti biasa).
  • Commit dan push kode ke server repository/source control seperti GIT atau SVN. Di masing-masing repository kita pasang hook script untuk memanggil job/project yang sudah kita buat dan konfigurasi di server CI.
  • Server CI akan meng-clone repository kemudian melakukan build, menjalankan tes otomatis (jika ada) dan deploy secara otomatis. Jika buildnya gagal ulangi lagi langkah pertama

Cukup ya intronya, berikutnya akan kita bahas tool/software yang bisa kita gunakan untuk mengimplementasikan CI, salah satunya adalah Jenkins.

Jenkins adalah salah satu software continuous integration (CI) open source yang dibuat menggunakan Java. Untuk sejarah Jenkins silahkan digoogle sendiri ya :-)

Selain Jenkins, ada tool-tool lain yang harus kita siapkan agar implementasi CI menggunakan Jenkins ini bisa berhasil. Berikut daftar lengkapnya :

  • Jenkins
  • MSBuild – untuk keperluan proses build
  • NuGet – untuk merestore package nuget sebelum proses build dijalankan
  • Source Control menggunakan Git, Anda bisa juga menggunakan SVN
  • TortoiseGit – aplikasi git client
  • Bonobo Git Server (server Git gratis berbasis Windows/IIS)
  • Inno Setup atau NSIS – untuk keperluan proses deploy/pembuatan paket installer

Tool-tool di atas selain perlu disiapkan juga harus tau cara penggunaannya, klo belum ya silahkan mampir dulu ke sini dan sini.

Sebelum kita lanjut ke pembahasan, kita lihat tool/software untuk Environment Test yang saya gunakan baik di sisi server (Server CI) dan client (developer).

Environment Test Server

Environment Test Client

  • Visual Studio .NET 2013 Community Edition
  • Source/version control Git
  • TortoiseGit

Fokus Pembahasan

Untuk postingan pertama ini, kita akan membahas:

  • Konfigurasi Jenkins
  • Plugin tambahan yang perlu diinstall
  • Pembuatan Project (Job)
  • Tes clone repository, restore library nuget dan build dalam satu langkah/klik

Instalasi Jenkins

Download dan install Jenkins di sini, setelah instalasi Jenkins bisa diakses di link http://localhost:8080

Konfigurasi Jenkins

Jenkins mempunyai banyak plugin yang mudah dikonfigurasi seperti plugin Git, MSBuild dan lainnya. Berikut adalah daftar plugin yang akan kita install.

  • Git plugin
  • MSBuild plugin
  • NUnit plugin
  • Cobertura plugin
  • PowerShell plugin

Sebagai contoh kita akan menginstall plugin Git dan MSBuild, berikut langkah-langkahnya :

Menginstall plugin Git
  • Akses link : http://localhost:8080/
  • Klik link Manage Jenkins, pilih Manage Plugins
  • Aktifkan tab Available, ketik Git plugin di filter box, dari daftar pilihan plugin yang tersedia pilih Git plugin
  • Klik tombol Install without restart

Menginstall plugin MSBuild

Masih sama dengan langkah-langkah sebelumnya, hanya saja kali ini plugin yang perlu difilter adalah MSBuild

Ulangi langkah-langkah di atas untuk menginstall plugin lainnya seperti NUnit, Cobertura dan PowerShell.

Konfigurasi Git dan MSBuild

Setelah instalasi plugin Git dan MSBuild, kita perlu menambahkan konfigurasinya di halaman Global Tool Configuration, berikut langkah-langkahnya :

  • Akses link : http://localhost:8080/
  • Klik link Manage Jenkins, pilih Global Tool Configuration
  • Scroll ke bawah sampai menemukan tulisan Git/Git installations, untuk isian Path to Git executable isikan lokasi instalasi git secara absolute

    Untuk lokasi Git disesuaikan dengan lokasi instalasi Git di mesin Anda.

  • Kemudian scroll kebawah lagi sampai menemukan tulisan MSBuild, kemudian klik tombol Add MSBuild
  • Isikan konfigurasinya seperti gambar berikut :

    Untuk lokasi MSBuild juga disesuaikan dengan lokasi instalasi MSBuild di mesin Anda. Terakhir klik tombol Save.

Pembuatan Project (Job)

Berikutnya kita akan membuat project sederhana untuk mencoba proses build, berikut langkah-langkahnya:

  • Akses link : http://localhost:8080/
  • Klik link New Item
  • Isikan nama project, misal northwind-build
  • Pilih Freestyle project
  • Pilih Ok

  • Aktifkan tab Source Code Management, kemudian pilih Git

  • Kemudian lengkapi isian Repository URL dan Credentials seperti contoh berikut:

    Untuk contoh di atas dengan asumsi instalasi Jenkins dan server repository Git di mesin yang sama.

    Jenkins selalu bekerja dengan branch dan secara default menggunakan branch master.

  • Berikutnya aktifkan tab Build, klik Add build step

  • Pilih Build a Visual Studio project or solution using MSBuild

    Disini kita perlu mengisikan beberapa nilai:

    • MSBuild Version diisi dengan MSBuild (yang sudah kita konfigurasi pada langkah sebelumnya)
    • MSBuild Build File diisi dengan nama solution atau project
    • Command Line Arguments (optional) diisi dengan parameter MSBuild
  • Karena project kita menggunakan library NuGet, kita juga perlu menambahkan konfigurasi untuk me-restore library NuGet. Masih di tab Build, klik Add build step kemudian pilih Execute Windows batch command.

    Untuk isian Command isikan perintah/skrip seperti berikut:

    Perintah/skrip di atas dengan asumsi Anda sudah mendownload tool NuGet dan menyimpannya di folder D:\Development Tools.

    Seperti yang sudah pernah saya bahas di postingan Persiapan Membangun Server CI Bagian #2, proses build dilakukan setelah me-restore library nuget. Jadi kita harus merubah urutan prioritas agar konfigurasi “Execute Windows batch command” dijalankan terlebih dulu sebelum konfigurasi “Build a Visual Studio project or solution using MSBuild” dengan cara men-drag-nya ke atas.

    Pada gambar di atas terlihat konfigurasi “Execute Windows batch command” dan “Build a Visual Studio project or solution using MSBuild” sudah berganti posisi. Terakhir klik tombol Save

Testing Build

Setelah menyelesaikan beberapa konfigurasi, saatnya melakukan pengetesan apakah konfigurasi sebelumnya sudah benar. Berikut langkah-langkahnya :

  • Klik link project northwind-build

  • Di halaman project northwind-build, klik link Build Now

  • Di informasi Build History akan terlihat progress build dengan nama #1, #2,… dst

  • Jika proses build-nya sukses penanda bulat-nya berwarna biru, jika warna merah berarti gagal

  • Untuk melihat detil build, klik link build number, misal #1, #2,… dst

  • Kemudian klik link Console Output

    Catatan penting dari output di atas adalah lokasi dari workspace di mana source code/hasil clone dari repository dan proses build dilakukan. Informasi ini tentu akan sangat membantu kita dalam melakukan debuging konfigurasi/setup CI.

Kesimpulan dari proses build di atas dan tentunya berdasarkan konfigurasi yang kita lakukan, jenkins melakukan hal-hal berikut :

  1. Meng-clone repository git
  2. Me-restore library nuget
  3. Melakukan proses build

Selamat Mencoba :-)

Comments