---
title: "CI/CD adalah: Pengertian, Tahapan Pipeline, dan Contoh YAML"
url: "https://helipod.io/blog/ci-cd-adalah"
date: "2026-10-09"
updated: "2026-10-09"
author: "Tim Helipod"
tags: ["ci cd adalah", "ci/cd", "continuous integration", "github actions", "pipeline"]
excerpt: "CI CD adalah praktik mengotomasi integrasi, test, dan deploy kode. Pelajari bedanya continuous delivery dan deployment, tahapan pipeline, dan contoh YAML."
---

# 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](/blog/devops-adalah) dan [CI/CD Pipeline untuk Hosting Aplikasi](/blog/ci-cd-pipeline-hosting)

---

## 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:

1. **Source**: pipeline terpicu oleh push atau pull request di Git.
2. **Install**: install dependency (`npm ci`, `pip install`, `composer install`).
3. **Lint**: cek gaya kode dan kesalahan sederhana.
4. **Test**: jalankan unit test dan integration test.
5. **Build**: buat artefak, misalnya bundle frontend atau Docker image.
6. **Deploy ke staging**: pasang di lingkungan uji.
7. **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.

```yaml
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:

- `on` menentukan kapan pipeline berjalan.
- Job `test` berjalan di runner Ubuntu, memasang Node.js 20 dengan cache npm, lalu menjalankan lint dan test.
- Job `build` memakai `needs: test`, artinya hanya berjalan kalau job `test` berhasil.
- Tag image memakai `github.sha` supaya 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:

1. GitHub Actions atau GitLab CI menjalankan lint dan test.
2. Kalau lolos, kode di branch utama di-deploy ke Helipod.
3. Kamu memantau proses build dan aplikasi lewat real-time logs.
4. Konfigurasi seperti URL database disimpan sebagai environment variables dan secrets.

Panduan langkah demi langkahnya ada di [CI/CD GitHub Actions ke Helipod](/blog/ci-cd-github-actions-helipod) dan [CI/CD GitLab ke Helipod](/blog/cicd-gitlab-helipod). Kalau memakai Dockerfile sendiri, lihat juga [Dockerfile custom di Helipod](/blog/dockerfile-custom-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](/pricing) untuk melihat biaya menjalankan aplikasimu.
