CI/CD, Docker dan Peranannya dalam Pengerjaan Proyek Perangkat Lunak

Gibran Brahmanta
4 min readApr 6, 2021

--

Dalam mengerjakan suatu proyek perangkat lunak, tentu pekerjaan kita tidak sebatas membuat sebuah produk yang dapat bekerja pada local perangkat yang kita gunakan. Kita juga perlu untuk melakukan deployment produk yang dibuat bisa digunakan oleh pihak lain. Untuk melakukan hal tersebut, kita perlu melakukan proses CI/CD agar produk yang dibuat dapat di-deploy secara mudah. Tools version control seperti Git sudah memiliki fitur untuk mengakomodasi hal tersebut. Sebelum membahas mengenai implementasi dari proses CI/CD itu sendiri, terdapat beberapa hal yang harus diketahui, antara lain adalah sebagai berikut

  • Continuous Integration (CI)

Merupakan sebuah proses dalam pengembangan perangkat lunak yang berguna untuk mengintegrasikan kode-kode yang ada dan melakukan build serta testing setiap kali selesai melakukan integrasi. Integrasi yang dimaksud pada kalimat sebelumnya ialah proses merging kode dari suatu aplikasi yang dikerjakan oleh beberapa programmer. Proses CI harus dilakukan agar error-error yang ada dapat dideteksi sesegera mungkin sehingga proses untuk melakukan fixing pada error tersebut bisa diselesaikan dalam waktu yang relatif cepat

  • Continuous Deployment/Delivery (CD)

Merupakan proses yang dilakukan agar produk yang dibuat dapat di-deliver ke pengguna secara cepat dan aman dalam metode yang bersifat sustainable. Proses tersebut perlu untuk dilakukan agar apabila terdapat perubahan pada produk yang disebabkan karena adanya perubahan requirement ataupun laporan atas adanya bug, hasil perubahan yang dilakukan pada produk tersebut bisa digunakan oleh pengguna secara lebih cepat.

Untuk melakukan proses CI/CD, terdapat sebuah tools yang dapat membantu yaitu Docker. Docker merupakan sebuah tools yang berfungsi sebagai container untuk menampung seluruh kode serta dependencies dari suatu aplikasi dalam suatu environment tertentu sehingga aplikasi tersebut dapat dijalankan dalam berbagai environment tidak terbatas dengan Sistem Operasi.

Salah satu contoh kasusnya adalah ketika kita membuat suatu aplikasi dalam enviroment Linux namun ingin dijalankan secara local dalam environment Windows. Dengan melakukan hal tersebut, besar kemungkinanya aplikasi tersebut tidak bisa dijalankan karena dependencies yang digunakan belum tentu tersedia pada environtment Windows. Sedangkan apabila kita menggunakan Docker sejak awal masa pengembangan untuk menampung kode dari aplikasi tersebut beserta seluruh dependencies-nya, kita dapat memastikan bahwa seluruh dependencies yang dibutuhkan dapat tersedia ketika menjalankan aplikasi tersebut pada environtment Windows.

Logo Docker (Sumber: Docker.com)

Penggunaan CI/CD pada Pengembangan Aplikasi SISIDANG

Dalam mengembangkan aplikasi SISIDANG, kelompok saya menerapkan proses CI/CD menggunakan fitur yang sudah disediakan oleh Gitlab yang diimplementasikan melalui suatu file bernama gitlab.ci.yml. Dalam proses CI/CD yang akan dijalankan, kami membagi proses tersebut menjadi 4 bagian (stage) yaitu:

Pada stage pertama yaitu “test”, kami melakukan Unittest serta Functional Test untuk setiap fitur yang kami kerjakan setiap kali ada yang melakukan push ke dalam branch-nya masing-masing ataupun melakukan merging dari suatu branch ke branch lainya. Tujuan dilakukanya hal tersebut adalah, untuk memastikan kembali bahwa seluruh hal yang kami implementasikan sudah sesuai fungsionalitasnya dengan yang diharapkan. Berikut adalah isi dari script yang menjalankan stage tersebut:

Selanjutnya, pada stage kedua yaitu “linter”, kami melakukan pengecekan pada setiap kode yang kami buat untuk mengimplementasikan sesutu agar kode yang dibuat dapat bersifat clean code. Output yang dihasilkan oleh stage tersebut berupa catatan pada bagian apa saja kode yang dibuat masih memiliki code smell berupa kesalahan pada format penulisan kode, unused import, ungrouped import, dan lain lain. Berikut adalah contoh keluaran dari stage tersebut:

Dan berikut adalah isi dari script yang menjalankan stage tersebut:

Berikutnya, untuk stage ketiga yaitu “Sonarqube” merupakan stage yang dijalankan untuk melakukan testing pada aplikasi Sonarqube sehingga kami bisa mendapatkan gambaran dengan jelas mengenai kondisi kode-kode yang ada pada proyek yang kami kerjakan berupa jumlah duplication line, code coverages, bug, serta code smells. Berikut adalah contoh hasil testing yang ada pada aplikasi Sonarqube:

Dan yang terakhir, stage “deploy” merupakan stage yang dijalankan untuk melakukan deployment aplikasi yang dibuat ke dalam server. Salah satu hal yang dilakukan pada stage tersebut adalah menambahkan suatu remote branch ke dalam environment CI/CD tersebut dan melakukan push ke remote branch tersebut.

Sekian yang dapat saya tuliskan mengenai peranan CI/CD serta docker dalam pengerjaan proyek perangkat lunak. Mohon maaf pada bagian implementasi, saya tidak bisa memberikan isi script yang dapat digunakan sebagai contoh pada stage ‘sonarqube’ serta ‘deploy’ dikarenakan data yang terdapat dalam script tersebut dapat bersifat credentials.

Referensi:

  1. https://www.cloudbees.com/continuous-delivery/continuous-integration
  2. https://continuousdelivery.com/
  3. https://docs.docker.com/get-started/overview/

--

--