Si ai / Si di

mohamad mahendra
PPL D7 — Fasilkom UI
4 min readApr 3, 2019

Term CI, Continous Integration, CD, dan Continous Deployment pasti sudah tidak asing lagi pada dunia software development. CI/CD sendiri bahkan sudah menjadi best practice pada pengembangan perangkat lunak. Untuk mempersingkat waktu langsung aja yuk kita bahas satu-persatu

Continous Integration

CI atau kepanjangannya yaitu Continous Integration adalah sebuah praktik menggabungkan atau mengintegrasikan semua pekerjaan developer menjadi satu secara kontinu. Term CI ini pertama kali dikenalkan oleh Grady Booch pada tahun 1991. Dalam prakteknya CI ini adalah sebuah proses bagi para developer agar bisa saling mengintegrasikan kode mereka agar semua developer up-to-date dengan kondisi kode saat ini. CI ini cocok sekali digunakan pada online repository seperti gitlab, github, bitbucket, dll. Tapi kenapa sih kita harus memakai CI ini? Sebenarnya CI ini tujuannya mulia sekali dengan memudahkan para developer dalam suatu proyek mengupdate kode mereka masing-masing sehingga semua orang mempunyai kode yang versi terbaru dan tidak perlu saling menunggu antar developer. Bandingkan pada zaman dahulu dimana untuk mendapatkan kode terbaru harus menunggu lama berjam-jam sampai berhari-hari yang menyebabkan kurang efisiennya pekerjaan developer pada zaman dahulu. Dengan adanya CI ini diharapkan para developer bisa lebih efektif dan efisien dalam pekerjaannya sekaligus memudahkan mereka dalam integrasi kode dalam suatu proyek

Continous Deployment

CD atau kepanjangannya Continous Deployment adalah sebuah tahap yang masih berhubungan dengan CI, CD memiliki fungsi melakukan deployment secara kontinu. Jadi pada dasarnya kita ingin mempunyai sistem automation dalam deploymentnya agar berhasil di deliver menjadi sebuah produk yang jadi. Dalam CD ini biasanya terdapat beberapa stage yang perlu dilalui agar produknya berhasil ter deploy dengan sempurna. Pada umumnya terdapat sebuah stage yang akan melakukan testing apakah sudah berhasil pass dan juga sebuah stage yang akan mengecek apakah program sudah dapat di build dengan sempurna. Sekarang pertanyaannya kenapa kita harus memakai CD ini padahal bisa manual aja? Sama seperti alasan kita memakai CI, CD bertujuan agar kita bisa lebih efektif dan efisien sebagai developer karena memudahkan pekerjaan kita. Selain itu dengan menggunakan CD produk juga akan keluar lebih cepat karena perlu melewati script deploy dan test sehingga jika berhasil melewati keduanya berarti produk sudah cukup baik untuk dirilis, selain itu kualitas kode yang dihasilkan juga akan lebih baik karena jika terdapat bug dan error sudah pasti tidak akan lolos stage-stage tersebut

Implementasi CI/CD

Pada proyek PPL kami, CI/CD adalah makanan sehari-hari yang berulang kali dan terus menerus digunakan oleh para developernya.

Kami menggunakan gitlab untuk menyimpan kode kami, gitlab ini sekaligus menjadi tempat CI kami. Kemudian branch yang kami gunakan juga ada beberapa jenis, yaitu branch development, staging, dan production. Branch development ini kita pakai untuk mendevelop pekerjaan kita, kemudian jika sudah berhasil kita akan merge branch user story development kita ke dalam branch staging. Kemudian untuk branch production baru akan dimerge saat produk sudah selesai.

Terdapat 3 stage pada CD kelompok kami yaitu build, test dan deploy. Pada stage build program akan dicek apakah program sudah dapat dicompile apa belum, jika sudah maka program akan lanjut ke stage selanjutnya jika belum dapat di build maka program akan berhenti/gagal dalam menjalankan proses deployment

Pada stage test program akan dihadapkan dengan test-test mengenai kesesuaian fungsi kode yang sudah dibuat sebelumnya. Jika sudah sesuai maka program akan lanjut ke stage selanjutnya. Jika program gagal dalam test ini maka program akan berhenti/gagal dalam menjalankan proses deployment

Pada stage deploy program akan melakukan deploy ke tempat yang diinginkan. Kemudian jika deploy itu berhasil maka semua stage sudah dilewati dengan sempurna dan program akan berhasil di deploy.

Foto diatas merupakan contoh potongan isi dari gitlab-ci.yml atau CD kami yang bertujuan untuk automation deployment ke portainer cs. Pada gitlab-ci, kami membaginya menjadi 2 yakni service dan webapp. Dimana service ini adalah kode backend kami sedangkan webapp merupakan kode frontend kami.

Mungkin ini saja yang dapat saya sampaikan mengenai CI/CD, Saya sendiri sangat senang adanya tools ini sangat memudahkan dalam mengerjakan suatu proyek. Terimakasih CI/CD

--

--