Panduan Praktis CI/CD: Dari Integrasi Hingga Deployment
Overview
CI/CD, kependekan dari continuous integration dan continuous deployment bertujuan untuk mempermudah (streamlined) dan mempercepat lifecycle pengembangan perangkat lunak
Mengapa CI/CD?
- Kecepatan: Pipeline CI/CD membantu pengembang membuat perubahan kode secepat dan sesering mungkin.
- Produktivitas yang meningkat: Melakukan deploy lebih sering berarti Anda dapat mengirimkan fitur baru dan perbaikan bug kepada pengguna lebih cepat, yang akan meningkatkan kepuasan pelanggan
- Risiko yang berkurang: Pipeline CI/CD akan membantu Anda menangkap bug lebih awal dalam proses pengembangan sebelum kode mencapai produksi. Anda ingin melakukan deploy secara sering, tetapi Anda juga tidak ingin sering mengirimkan bug kepada pengguna Anda — CI/CD akan mengurangi risiko melakukan hal tersebut.
- Kualitas yang lebih tinggi: Memperbaiki masalah lebih awal dalam siklus pengembangan berarti Anda akan dapat mengirimkan fitur atau perbaikan berkualitas tinggi kepada pengguna.
Apa itu CI/CD?
CI/CD terdiri dari 2 bagian yaitu CI (continuous integration) dan CD (continuous delivery/deployment)
- CI: mengacu pada tahap building dan unit testing dalam proses rilis perangkat lunak. Setiap revisi/perubahan yang di-commit akan men-trigger build dan unit testing secara otomatis
- CD: mengacu pada tahap rilis dalam proses pengembangan perangkat lunak. Tahap rilis ini dilakukan dengan artifact build yang siap di deploy dan telah melewati proses pengujian terstandarisasi
Konsep Penting
- Trigger
Sesuatu yang memicu pipeline untuk berjalan - Pipeline
Sebuah workflow dari process CI atau CD yang terdiri dari satu stage atau lebih - Stage
Stage adalah batasan logikal dari sebuah pipeline. Biasanya digunakan untuk pemisahan kepentingan misalnya (Build, staging, dan production). Terdiri dari satu job atau lebih. - Job
Sebuah job mewakili batasan eksekusi dari serangkaian step. Pemisahan job biasanya dilakukan jika ada keperluan untuk menjalankan serangkaian steps pada beberapa environment yang berbeda. Setiap job berjalan pada satu agent - Step
Adalah blok terkecil dari pipeline, misal dalam satu job ada step yang menjalankan build dan ada step yang menjalankan testing. Step bisa berisi task maupun script - Agent
Sebuah infrastruktur komputer dengan agent software yang menjalankan job
Jadi, trigger akan memicu pipeline untuk berjalan yang mana terdiri dari beberapa stage dan di dalam stage tersebut ada beberapa job yang dijalankan oleh agent dan job-job tersebut terdiri dari step-step yang berisi instruksi atau script.
CI In Practice
Pada contoh kali ini, kita menggunakan azure devops untuk membuat pipeline pada CI. Pertama, klik new pipeline pada halaman di menu pipelines.
Kemudian sambungkan repository anda dengan pipeline, pada contoh ini kita akan menggunakan file YAML untuk mengkonfigurasi pipelinenya. Jika anda tidak ingin menggunakan pipeline, anda bisa klik Use the classic editor.
Setelah menyambungkan repo, anda akan sampai di step Configure:
Pilih starter pipeline untuk menggunakan template kosong file yaml
Kemudian kita konfigurasikan file pipeline ini seperti trigger, agent, step-step buildnya sesuai dengan kebutuhan.
Gambar dibawah adalah contoh file yaml untuk build dan push image menggunakan docker dengan trigger tags yang berawalan v*:
Jika sudah selesai maka simpan konfigurasi dengan menekan tombol save and run, maka pipeline yang tadi kita atur akan berjalan
CD In Practice
Untuk membuat pipeline CD di Azure Devops, buka menu Releases dan tekan tombol New kemudian pilih new release pipeline
Maka akan tampil form untuk membuat new release pipeline, jika ada pilihan untuk memilih template pilih start with an empty job untuk membuat release pipeline dari awal
Pertama, tambahkan artifact dan set sumber pipeline dengan menekan tombol add pada section Artifacts. Lalu, sesuaikan konfigurasi Artifact sesuai dengan kebutuhan.
Lalu, aktifkan Continuous deployment trigger untuk menjalankan pipeline release setiap ada build yang berhasil dari pipeline CI.
Untuk menambah step-step release, tekan tombol add pada section Stages kemudian pilih New Stage. Lalu pindah ke tab Tasks untuk mengatur step-step yang ada pada release. Berikut adalah contoh step yang ada pada pipeline release: