CI/CD adalah: Pengertian, Tahapan Pipeline, dan Contoh YAML
CI CD adalah singkatan dari Continuous Integration dan Continuous Delivery (atau Continuous Deployment): praktik mengotomasi proses menggabungkan kode, menjalankan test, dan merilis aplikasi. Setiap kali kamu push kode, sebuah pipeline otomatis mengecek apakah kode itu aman untuk dirilis, lalu membawanya ke server.
Tanpa CI/CD, rilis biasanya dilakukan manual: SSH ke server, git pull, install dependency, restart aplikasi, dan berharap tidak ada yang lupa. Cara ini lambat dan rawan salah.
Artikel ini menjelaskan pengertian CI/CD, perbedaan continuous delivery dan continuous deployment, tahapan sebuah pipeline, contoh file GitHub Actions yang bisa langsung kamu pakai, tools populer, dan best practice-nya.
Baca juga: DevOps adalah: Pengertian dan Prinsipnya dan CI/CD Pipeline untuk Hosting Aplikasi
CI CD adalah Apa? Penjelasan Tiap Bagian#
Continuous Integration (CI)#
Continuous Integration adalah kebiasaan menggabungkan (merge) perubahan kode ke branch utama sesering mungkin, minimal setiap hari, dan setiap penggabungan langsung diverifikasi secara otomatis dengan build dan test.
Tujuannya mencegah "integration hell", yaitu kondisi ketika beberapa developer bekerja terpisah berminggu-minggu lalu kesulitan menggabungkan kodenya. Dengan CI, konflik dan bug kecil ketahuan saat masih kecil.
Continuous Delivery#
Continuous Delivery melanjutkan CI: setiap perubahan yang lolos test otomatis dibuat siap dirilis kapan saja. Artefaknya (misalnya Docker image) sudah dibangun dan bisa di-deploy ke production, tapi keputusan rilis tetap lewat satu klik atau persetujuan manusia.
Continuous Deployment#
Continuous Deployment selangkah lebih jauh: setiap perubahan yang lolos semua test langsung di-deploy ke production tanpa persetujuan manual.
| Aspek | Continuous Delivery | Continuous Deployment |
|---|---|---|
| Build dan test otomatis | Ya | Ya |
| Artefak siap rilis | Ya | Ya |
| Rilis ke production | Manual (satu klik atau approval) | Otomatis |
| Cocok untuk | Tim yang butuh kontrol rilis | Tim dengan test coverage kuat |
Keduanya sama-sama disingkat "CD", jadi saat berdiskusi pastikan mana yang dimaksud.
Tahapan Pipeline CI/CD#
Pipeline adalah rangkaian langkah otomatis yang dijalankan setiap ada perubahan kode. Tahap yang umum:
- Source: pipeline terpicu oleh push atau pull request di Git.
- Install: install dependency (
npm ci,pip install,composer install). - Lint: cek gaya kode dan kesalahan sederhana.
- Test: jalankan unit test dan integration test.
- Build: buat artefak, misalnya bundle frontend atau Docker image.
- Deploy ke staging: pasang di lingkungan uji.
- Deploy ke production: otomatis (continuous deployment) atau setelah approval (continuous delivery).
Kalau satu tahap gagal, pipeline berhenti dan tahap berikutnya tidak dijalankan. Itulah yang membuat kode rusak tidak sampai ke pengguna.
Contoh Pipeline GitHub Actions#
Berikut file .github/workflows/ci.yml untuk aplikasi Node.js. Pipeline ini menjalankan lint dan test di setiap push dan pull request, lalu membangun Docker image kalau test lolos.
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run lint
- run: npm test
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
Penjelasan singkat:
onmenentukan kapan pipeline berjalan.- Job
testberjalan di runner Ubuntu, memasang Node.js 20 dengan cache npm, lalu menjalankan lint dan test. - Job
buildmemakaineeds: test, artinya hanya berjalan kalau jobtestberhasil. - Tag image memakai
github.shasupaya setiap build punya versi unik dan mudah dilacak.
Untuk mengirim image ke registry atau memicu deploy, kamu menambah langkah login dan push, dengan kredensial disimpan di GitHub Secrets, bukan ditulis di file YAML.
Tools CI/CD Populer#
| Tool | Kelebihan | Catatan |
|---|---|---|
| GitHub Actions | Terintegrasi dengan GitHub, marketplace action sangat banyak | Menit gratis terbatas untuk repo private |
| GitLab CI/CD | Bawaan GitLab, konfigurasi .gitlab-ci.yml |
Bisa pakai runner sendiri |
| Jenkins | Open source, sangat fleksibel, plugin banyak | Kamu harus memasang dan merawat servernya sendiri |
| CircleCI | Cepat, konfigurasi sederhana | Layanan pihak ketiga |
Untuk tim yang sudah memakai GitHub, GitHub Actions biasanya pilihan paling praktis. Jenkins cocok kalau kamu butuh kontrol penuh dan punya orang yang merawatnya.
Best Practice CI/CD#
- Jaga pipeline tetap cepat. Pakai cache dependency dan jalankan job secara paralel. Pipeline yang lambat membuat developer malas menunggu hasilnya.
- Commit kecil dan sering. Perubahan kecil lebih mudah di-review dan lebih mudah di-rollback.
- Jangan simpan secret di repository. Gunakan fitur secrets dari tool CI dan environment variables di server.
- Build sekali, deploy berkali-kali. Artefak yang sama dipakai di staging dan production supaya tidak ada perbedaan.
- Sediakan rollback. Pastikan versi sebelumnya bisa dipasang kembali dengan cepat.
- Pipeline merah harus segera diperbaiki. Jangan biasakan merge saat test gagal.
Push to Deploy di Helipod#
Di Helipod, kamu bisa menghubungkan repository GitHub atau GitLab ke sebuah service. Build berjalan otomatis: Helipack mendeteksi framework dan membuat Dockerfile, atau Helipod memakai Dockerfile milikmu. Kamu bisa juga deploy dari Docker image yang sudah dibangun oleh pipeline sendiri.
Alur yang umum dipakai:
- GitHub Actions atau GitLab CI menjalankan lint dan test.
- Kalau lolos, kode di branch utama di-deploy ke Helipod.
- Kamu memantau proses build dan aplikasi lewat real-time logs.
- Konfigurasi seperti URL database disimpan sebagai environment variables dan secrets.
Panduan langkah demi langkahnya ada di CI/CD GitHub Actions ke Helipod dan CI/CD GitLab ke Helipod. Kalau memakai Dockerfile sendiri, lihat juga Dockerfile custom di Helipod.
FAQ#
CI CD adalah bagian dari DevOps?#
Ya. CI/CD adalah salah satu praktik inti DevOps, khususnya untuk tahap build, test, release, dan deploy.
Apakah proyek kecil perlu CI/CD?#
Perlu, walau sederhana. Pipeline yang hanya menjalankan test di setiap push sudah sangat membantu mencegah bug masuk ke branch utama.
Apa bedanya continuous delivery dan continuous deployment?#
Pada continuous delivery, rilis ke production masih butuh persetujuan atau satu klik. Pada continuous deployment, rilis terjadi otomatis setiap kali semua test lolos.
Apakah GitHub Actions gratis?#
Untuk repository public, GitHub Actions dengan runner standar gratis. Untuk repository private, ada kuota menit gratis per bulan sesuai paket akun GitHub, dan pemakaian di atasnya berbayar.
Bisakah deploy ke Helipod tanpa menulis Dockerfile?#
Bisa. Helipack mendeteksi framework seperti Node.js, Python, PHP (Laravel), dan Go, lalu membuat Dockerfile secara otomatis.
Mulai Bangun Pipeline Pertamamu#
Mulailah dari pipeline sederhana: install, test, build. Setelah itu sambungkan repository ke Helipod supaya kode yang lolos test langsung berjalan. Cek halaman harga untuk melihat biaya menjalankan aplikasimu.