CI mengotomasi build, test, dan linting setiap perubahan kode sebelum masuk ke main; di episode ini kalian memahami filosofi integrasi terus-menerus, mengenal GitHub Actions, GitLab CI, dan Jenkins, lalu membangun pipeline CI pertama untuk aplikasi nyata

Di episode 4 kita belajar bahwa setiap perubahan masuk melalui Pull Request dan harus melewati gerbang kualitas. Tapi siapa yang menjalankan gerbang itu? Jawabannya: Continuous Integration (CI). CI adalah otomasi yang mengeksekusi build, test, dan linting setiap kali ada perubahan kode — otomatis, konsisten, dan tanpa menunggu manusia.
Mengapa CI adalah fondasi DevOps? Karena ia menjawab masalah klasik yang dikenal sebagai "works on my machine". CI memindahkan verifikasi dari laptop pribadi ke mesin yang bersih dan terstandar. Setiap commit menjadi kandidat rilis yang terbukti lolos uji — dan di episode 6, CI ini akan dilanjutkan menjadi Continuous Delivery.
Martin Fowler mendefinisikan CI singkat: integrasikan kode secara terus-menerus ke dalam trunk, dan verifikasi setiap integrasi secara otomatis. Empat pilar yang wajib kalian pegang:
Hasilnya: commit ke main selalu dalam keadaan hijau (green). Kode rusak tidak pernah sempat mendarat di main — ia sudah tertahan di CI.
Pipeline CI tipikal memiliki empat tahap:
stages:
- install
- lint
- test
- build| Tahap | Aktivitas | Kenapa Penting |
|---|---|---|
| Install | Memasang dependency (npm ci, pip install) | Reproducible build di mesin bersih |
| Lint | Memeriksa gaya dan kesalahan statis | Menangkap bug sebelum runtime |
| Test | Menjalankan unit & integration test | Membuktikan perilaku kode |
| Build | Mengompilasi artifact | Menghasilkan produk yang siap rilis |
Jika semua tahap hijau, pipeline menghasilkan artifact — produk nyata yang bisa dirilis. Artifact inilah yang akan kalian kelola lebih serius di episode 17.
Ada tiga tool yang dominan di industri, dan ketiganya mengikuti pola yang sama: konfigurasi sebagai file dalam Git (pipeline-as-code).
Pipeline didefinisikan dalam .github/workflows/*.yml. Sangat terintegrasi dengan GitHub, populer di komunitas open source, dan marketplace action-nya luas:
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm run lint
- run: npm testPipeline didefinisikan dalam .gitlab-ci.yml, dikenal dengan konsep runners (eksekutor build) yang bisa self-hosted:
stages: [test, build]
test:
stage: test
image: node:22
script:
- npm ci
- npm run lint
- npm test
build:
stage: build
image: node:22
script:
- npm run build
artifacts:
paths: [dist/]Jenkins adalah veteran yang fleksibel dan bisa dikonfigurasi lewat UI atau Jenkinsfile (Groovy). Keunggulannya: ekosistem plugin raksasa dan kontrol granular. Kekurangannya: mengelola Jenkins server sendiri menambah beban operasional — kebalikan dari SaaS CI.
Tip
Untuk tim baru, mulai dengan GitHub Actions atau GitLab CI — pipeline-as-code yang terintegrasi dengan repository, tanpa perlu mengelola server CI sendiri. Jenkins tetap pilihan kuat untuk lingkungan korporat yang membutuhkan kontrol dan plugin khusus.
Mari terapkan pada aplikasi Node.js sederhana. Alur lengkapnya: install → lint → test → build → simpan artifact.
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Run tests
run: npm test
- name: Build
run: npm run build
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: build-output
path: dist/Perhatikan dua hal penting: on: pull_request membuat CI otomatis berjalan di setiap PR (gerbang review dari episode 4), dan actions/upload-artifact menyimpan hasil build agar bisa diunduh atau diteruskan ke tahap CD.
Untuk menguji, kalian bisa mengupload file ini ke repository dan memecahkan test secara sengaja untuk melihat pipeline berubah merah — cara terbaik memahami fail fast.
Manfaat yang bisa kalian rasakan langsung:
Pitfall umum:
Inti yang harus dibawa pulang:
Di episode 6 selanjutnya kita membahas Continuous Delivery & Deployment (CD) — bagaimana artifact yang lolos CI diteruskan ke environment dev, staging, dan produksi dengan strategi deployment yang aman: blue-green, canary, dan rolling. Di sinilah alur "kode → produksi" menjadi otomatis penuh.