Meningkatkan Produktifitas Development Dengan CI/CD edisi Gitlab Runner
Banyak sekali saya melihat para developer mendevelop aplikasi mereka dengan cara yang kurang optimal, seperti misalnya masih menggunakan FTP untuk mengupdate bagian kode pada sebuah website atau pull request ulang ke server untuk mengupdate aplikasi.
Itu semua cara traditional yang masih banyak digunakan para developer didunia, cara tersebut tidak salah sebenarnya namun kurang efisien. Untuk apa kita melakukan hal yang sama berkali-kali ? padahal bisa diotomisasi dengan melakukan beberapa hal sehingga cara tersebut tidak perlu dilakukan lagi secara manual melainkan secara otomatis.
Untuk itu tulisan ini saya mengajak dan menuntun agar teman-teman bisa meningkatkan efisiensi dan produktifitas saat development aplikasi melalui salah satu metode yang bernama CI/CD (Continus Integration & Continus Deployment).
Apa itu CI/CD ?
Sebelum lanjut ke implementasi mari kita kupas First Principle Thinking terlebih dahulu, jadi apa sih CI/CD ?
Singkatnya CI/CD atau Continuous Integration & ContinuousDeployment sebuah metode dimana proses Integrasi dan Deploy aplikasi dilakukan secara otomatis (Automated), jadi developer bisa lebih fokus pada pengembangan aplikasi tanpa perlu memikirkan hal lain, lebih hemat waktu dan cepat saat membuat fitur baru atau perbaikan bugs di sisi server.
Bagaimana Continuous Integration bisa meningkatkan kolaborasi dalam tim ?
CI/CD Bekerja dalam lingkup Version Control System (VCS) seperti Github, Gitlab, Bitbucket dll. dengan begitu developer bisa memisah ruang kerja mereka dengan Branch dan Pipeline masing-masing, Pipeline sendiri bisa dianalogikan sebagai jalur proses CI/CD itu sendiri.
Sebagai contoh saya sedang mengerjakan fitur Login sedangkan teman saya mengerjakan fitur Register, dan kami memiliki branch kami masing-masing. Secara otomatis platform VCS akan membuat 2 Pipeline baru untuk saya dan teman saya, dimana Pipeline tersebut berguna untuk pengetesan kode kami disisi server apakah error atau tidak. karena kami memiliki Pipeline yang berbeda maka tidak akan terjadi bentrok satu-sama lain, menjadikan kolaborasi tim semakin meningkat.
Untuk pengimplementasian CI/CD ke dalam proyek disini penulis akan menggunakan Gitlab Runner sebagai contoh prakteknya, hal pertama yang perlu dilakukan yaitu memiliki akun Gitlab.
1. Persiapan Proyek
Jika teman-teman belum memiliki akun gitlab bisa mendaftar di https://gitlab.com/users/sign_up
Masuk ke dashboard Gitlab lalu klik New Project
Lalu pilih Create Blank Project dan isi dengan nama project yang teman-teman inginkan, sebagai contoh saya beri nama test-ci-cd
Lanjut kita buat code sederhana untuk diupload ke dalam proyek gitlab kita, disini saya menggunakan framework buatan saya yaitu FotonJS
untuk penggunaanya cukup sederhana hanya dengan 2 perintah saja seperti berikut
dengan perintah diatas maka akan terbuat direktori baru bernama test-ci-cd dengan berisi kode nodejs dari framework FotonJS
Selanjutnya tinggal dorong ke repository yang sebelumnya telah dibuat
2. Membuat konfigurasi file .gitlab-ci.yml
File .gitlab-ci.yml berfungsi untuk mengatur konfigurasi dari pipeline gitlab, penggunaanya sangat mudah, teman-teman cukup membuat 1 file dengan nama .gitlab-ci.yml lalu isi dengan langka-langkah unit test serta langkah-langkah deployment, teman-teman bisa juga mengisi variable-environment yang diperlukan saat testing maupun deployment.
Struktur dari.gitlab-ci.yml
ada beberapa keyword yang sering digunakan saat membuat konfigurasi .gitlab-ci.yml seperti variable, stages, script, tags dan only
variable digunakan untuk menampung konfigurasi environment aplikasi kita, misalnya saat test berjalan saya ingin aplikasi terkoneksi ke database-test, maka saya bisa devinisikan di keyword variable, contoh :
stages sesuai artinya (tahap), digunakan untuk mengatur tahap-tahap testing/deploying aplikasi kita
script digunakan untuk menjalankan perintah-perintah testing /deplyoing aplikasi kita
tags digunakan untuk menandai script yang ingin dijalankan
only digunakan untuk membatasi eksekusi jobs, misalnya temen-temen ingin job tersebut hanya dieksekusi di branch develop maka temen-temen bisa menambahkan only seperti ini
dan berikut konfigurasi lengkap dari .gitlab-ci.yml yang saya buat sederhana
3. Konfigurasi Gitlab Runner pada server Ubuntu
Instalasi gitlab-runner
Langkah selanjutnya menginstall gitlab-runner pada server pribadi teman-teman, untuk disini saya menggunakan sistem operasi Ubuntu.
Sebenarnya teman-teman bisa menggunakan gitlab-runner gratisan bawaannya gitlab namun terbatas build time dan antrian
Disini saya menggunakan ubuntu dengan arsitektur amd64, jadi perintah penginstalannya seperti berikut.
untuk melihat semua nama lengkap installer gitlab-runner bisa dilihat di https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html
jika sudah didownload, selanjutnya installasi program dengan perintah berikut
Registrasi gitlab-runner
Selanjutnya me-registrasi repository kita ke gitlab-runner yang sudah teman-teman install, caranya navigasi ke Settings > CI/CD lalu klik Collaps pada menu Runner dan gulir kebawah untuk melihat informasi URL dan Token.
Gitlab-runner memiliki beberapa tipe eksekutor seperti shell, ssh, parallels, VirtualBox, Docker, Docker Machine (auto-scaling), Kubernetes, dan Custom, untuk ditulisan ini saya akan menggunakan eksekutor shell maka dari itu perintah yang saya jalankan seperti ini
jangan lupa untuk mengubah value yang terdapat di flag perintah tersebut
4. Menjalankan Job Pipeline
Langkah terakhir untuk mencoba menjalankan job yang sudah teman-teman konfigurasi cukup mudah, hanya perlu mendorong (push) perubahan kode teman-teman lalu secara otomatisa Job akan berjalan seperti ini.
Dan jika Job pipeline sudah selesai dijalankan akan berubah menjadi centang hijau
Dan jika error akan berubah menjadi silang mer
Untuk mengetahui dimana letak error nya teman -teman bisa mengklik job yang bertanda merah lalu memeriksa log apa yang bikin job tersebut bermasalah
Silahkan teman-teman perbaiki lalu push ulang perubahannya, nanti pipeline akan berjalan otomatis dan pastikan untuk mantau pipeline yang sedang berlangsung.
Gak papa chat mu cuma centang 2 sama doi, yang penting pipeline mu centang 1 dan hijau
Cukup sampai disini pembahasannya tentang “Meningkatkan Produktifitas Development Dengan CI/CD edisi Gitlab Runner”, jika ada masalah ataupun ada hal yang ingin ditanya jangan sungkan untuk berkomentar atau gapai saya di Facebook, Instagram, ataupun Telegram