Pernah mendengar istilah CI/CD tapi masih bingung apa sebenarnya artinya? Atau mungkin Anda sudah tahu teorinya tapi belum pernah mempraktikkannya? Artikel ini akan menjelaskan CI/CD dari nol — mulai dari konsep dasar hingga implementasi sederhana menggunakan GitHub Actions.
1. Apa Itu CI/CD?
CI/CD adalah singkatan dari Continuous Integration dan Continuous Delivery (atau Continuous Deployment). Ini adalah praktik dalam pengembangan perangkat lunak yang mewajibkan tim developer untuk sering melakukan integrasi kode ke repositori utama, di mana setiap integrasi akan diverifikasi secara otomatis melalui build dan testing.
Continuous Integration (CI) — setiap kali developer mendorong kode ke repositori, secara otomatis akan dijalankan:
- Build project
- Unit test
- Linting
- Integration test
Continuous Delivery (CD) — setelah CI berhasil, kode siap dirilis ke production secara otomatis atau semi-otomatis.
2. Mengapa CI/CD Penting?
Tanpa CI/CD (Siklus Tradisional)
- Developer mengerjakan fitur sendiri-sendiri selama berminggu-minggu
- Fitur digabungkan di akhir siklus (merge hell)
- Build gagal karena konflik tak terduga
- Butuh waktu berhari-hari untuk debugging integrasi
- Deployment setahun sekali — penuh drama
Dengan CI/CD
- Developer push kode setiap hari (bahkan beberapa kali sehari)
- CI otomatis membuild dan mengetes kode
- Jika ada error, developer tahu dalam hitungan menit
- Kode yang sudah lolos CI siap dideploy kapan saja
- Deployment bisa dilakukan beberapa kali sehari — tanpa stres
3. Komponen Utama CI/CD Pipeline
Sebuah pipeline CI/CD terdiri dari beberapa tahapan:
[Commit] → [Build] → [Test] → [Deploy Staging] → [Deploy Production]
A. Source Stage
Dimulai saat developer melakukan git push ke repositori. Webhook akan memberi tahu CI server.
B. Build Stage
Mengompilasi kode, mengunduh dependensi, dan membuat artefak:
npm install
npm run build
atau:
dotnet build
C. Test Stage
Menjalankan berbagai jenis testing:
- Unit test: menguji fungsi individu
- Integration test: menguji interaksi antar komponen
- Linting: memeriksa kualitas kode
D. Deploy Stage
Mengirim artefak ke environment target:
- Staging: environment mirror production untuk pengujian akhir
- Production: environment yang diakses pengguna
4. Implementasi Sederhana dengan GitHub Actions
GitHub Actions adalah platform CI/CD bawaan GitHub yang mudah digunakan. Berikut contoh pipeline sederhana untuk project Node.js:
Buat file .github/workflows/ci.yml di repositori Anda:
name: CI Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build-test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x]
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: $
- name: Install dependencies
run: npm ci
- name: Run lint
run: npm run lint
- name: Run tests
run: npm test
- name: Build
run: npm run build
Penjelasan:
on: push— pipeline akan terpicu setiap kali ada pushmatrix— tes berjalan di multiple versi Node.jsnpm ci— install dependensi (lebih cepat darinpm installdi CI)- Setiap
run— jika gagal, pipeline akan berhenti dan mengirim notifikasi
5. Continuous Deployment dengan Docker
Lanjutan dari pipeline di atas, kita bisa menambahkan tahap deploy menggunakan Docker:
deploy:
needs: build-test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: $
password: $
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
push: true
tags: user/app:latest
- name: Deploy to server
uses: appleboy/ssh-action@v1
with:
host: $
username: $
key: $
script: |
docker pull user/app:latest
docker stop app || true
docker rm app || true
docker run -d --name app -p 3000:3000 user/app:latest
6. Praktik Terbaik CI/CD
- Commit kecil dan sering — pipeline berjalan lebih cepat, error lebih mudah dilacak
- Jaga pipeline tetap cepat — jika pipeline butuh >10 menit, developer akan malas nunggu
- Gunakan caching — cache
node_modulesatau dependensi lain agar tidak perlu diunduh ulang - Test di environment yang mirip production — hindari “works on my machine”
- Fail fast — pipeline harus gagal secepat mungkin jika ada masalah
- Notifikasi — kirim notifikasi ke Slack/Discord jika pipeline gagal
7. Tools CI/CD Populer
| Tool | Tipe | Keunggulan |
|---|---|---|
| GitHub Actions | Cloud (built-in GitHub) | Integrasi sempurna dengan GitHub |
| GitLab CI/CD | Cloud/Self-hosted | Pipeline YAML powerful |
| Jenkins | Self-hosted | Paling fleksibel, plugin sangat banyak |
| CircleCI | Cloud | Cepat, caching cerdas |
| Azure DevOps | Cloud | Integrasi dengan Microsoft ecosystem |
Kesimpulan
CI/CD bukan lagi opsional — ini sudah menjadi standar industri untuk pengembangan perangkat lunak modern. Memulai dengan GitHub Actions sangat mudah karena tidak perlu server terpisah dan terintegrasi langsung dengan repositori Anda.
Ingatlah prinsip utamanya: otomatisasi, umpan balik cepat, dan rilis tanpa rasa takut. Mulailah dari pipeline sederhana — build dan test — lalu kembangkan secara bertahap dengan deploy otomatis.
Kiki/🎮🍉⌨️🍩💻
Apa itu Static Site Generator dan Mengapa Kamu Harus Mencobanya?