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
- Windows Server 2008 R2
- Automation server Jenkins
- .NET Framework 4.0, 4.5.x
- Microsoft Build 2015
- Source/version control Git
- Server Repository Git
- Package Installer Inno Setup
- NuGet
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
, ketikGit plugin
di filter box, dari daftar pilihan plugin yang tersedia pilihGit 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 isianPath to Git executable
isikan lokasi instalasi git secara absoluteUntuk lokasi Git disesuaikan dengan lokasi instalasi Git di mesin Anda.
- Kemudian scroll kebawah lagi sampai menemukan tulisan
MSBuild
, kemudian klik tombolAdd 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 pilihGit
Kemudian lengkapi isian
Repository URL
danCredentials
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 branchmaster
.Berikutnya aktifkan tab
Build
, klikAdd 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
- MSBuild Version diisi dengan
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 pilihExecute 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 linkBuild Now
Di informasi
Build History
akan terlihat progress build dengan nama#1
,#2
,… dstJika proses build-nya sukses penanda
bulat
-nya berwarna biru, jika warna merah berarti gagalUntuk melihat detil
build
, klik link build number, misal#1
,#2
,… dstKemudian klik link
Console Output
Catatan penting dari
output
di atas adalah lokasi dariworkspace
di mana source code/hasil clone dari repository dan proses build dilakukan. Informasi ini tentu akan sangat membantu kita dalam melakukandebuging
konfigurasi/setup CI.
Kesimpulan dari proses build di atas dan tentunya berdasarkan konfigurasi yang kita lakukan, jenkins melakukan hal-hal berikut :
- Meng-clone repository git
- Me-restore library nuget
- Melakukan proses build
Selamat Mencoba :-)