CI/CD: Automation Time!

Fadhlan Hazmi
PPL D7 — Fasilkom UI
3 min readApr 14, 2019
CI/CD Pipeline

Pesatnya perkembangan industri teknologi membuat developer harus dapat bergerak secara cepat dan agile. Integrasi kode dengan cara bersama-sama berkumpul lalu menyatukan kode dari masing-masing orang merupakan cara yang kuno. Begitu juga jika melakukan deployment dengan cara manual setiap kali ada perubahan pada kode. Cara-cara kuno itu akan membuat anda tertinggal dalam mendevelop aplikasi anda. Saingan anda sudah memikirkan fitur keren apa lagi yang akan di implementasi, sementara anda masih berkutat dengan integrasi dan deployment.

CI/CD akan membuat pekerjaan integrasi dan deployment anda menjadi lebih mudah dan “seamless”. CI/CD (Continuous Integration dan Continuous Deployment) merupakan konsep automasi pada proses integrasi dan proses deployment pada aplikasi anda. Proses yang anda harus lakukan secara manual sebelumnya akan di lakukan secara otomatis dengan CI/CD. Ada beberapa tools yang dapat digunakan untuk CI/CD seperti Travis CI, Jenkins, GoCD, Gitlab CI dan lain-lain.

Continuous Integration

Seperti yang sudah dijelaskan, bagian ini akan mengintegrasi kode-kode yang sudah dibuat di aplikasi anda. Namun, CI tidak hanya integrasi semata, setelah dilakukan integrasi dapat dilakukan proses-proses yang didefiniskan sebelumnya. Proses-proses yang dapat dilakukan adalah:

  • Proses build aplikasi dari kode yang sudah di integrasikan di repository
  • Unit testing yang sudah di automasi untuk memastikan setiap bagian kode yang dibuat sudah diterapkan dengan baik
  • Integration testing yang juga di automasi untuk memastikan kode yang sudah di integrasi berjalan dengan baik
  • Menghasilkan test coverage untuk melihat seberapa baik test yang sudah dibuat

Dengan adanya proses-proses tersebut yang sudah diautomasi, developer dapat fokus pada aplikasi yang dibangun, cukup DevOps yang berpusing-pusing dengan CI/CD (cc: benny the DevOps master) hehe.

Continuous Deployment

Setelah kode yang dibuat sudah terintegrasi menjadi sebuah aplikasi, maka langkah selanjutnya adalah mendeploy aplikasi tersebut. Pastinya proses deployment ini akan di automasi seperti proses integrasi yang sebelumnya.

Proses deployment yang di automasi sangat penting terutama jika menerapkan agile development. Jika tanpa automasi, setiap kali ada perubahan, harus dilakukan deployment secara manual yang pastinya menghabiskan waktu.

Automasi pada proses integrasi dan deployment dapat dilakukan dengan menggunakan tools yang sudah disebutkan. Kita akan membahas penerapan CI/CD pada kelompok ppl kami dengan menggunakan salah satu tools, yaitu Gitlab CI.

Koneg Liquid’s CI/CD

Untuk memakai Gitlab CI, online repository yang digunakan adalah gitlab.com. CI/CD pada Gitlab CI didefinisikan dengan cara membuat file .gitlab-ci.yml. Mari kita lihat konfigurasi Gitlab CI untuk aplikasi backend kelompok ppl kami:

stages:
- build
- test
- deploy
build-service:
image: node:latest
stage: build
before_script:
- cd service
script:
- npm install
only:
changes:
- service/**/*
- .gitlab-ci.yml
test-service:
image : node:latest
stage : test
before_script:
- cd service
script:
- npm install
- npm run coverage
coverage: '/Code coverage: \d+\.\d+/'
only:
changes:
- service/**/*
- .gitlab-ci.yml
service_stage_deploy:
<<: *deploy-template
variables:
TYPE: "service"
ENVIRONMENT: "stage"
before_script:
- cd service
- docker info
only:
refs:
- staging
changes:
- service/**/*
- .gitlab-ci.yml

CI/CD kami terdiri dari 3 tahap, yaitu tahap build, test, dan deploy. Build dan test merupakan CI sedangkan deploy merupakan CD. Kami membuat script yang membuat CI/CD berjalan hanya jika terjadi perubahan pada folder service (backend).

Seperti itu kira-kira CI/CD dan salah satu contoh penerapannya. Semoga tulisan ini dapat membantu kalian para pembaca yang ingin menerapkan CI/CD dan juga menambah pengetahuan. Sampai ketemu di tulisan saya yang selanjutnya!

--

--