> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skanesgalab.my.id/llms.txt
> Use this file to discover all available pages before exploring further.

# Pengenalan CI/CD

> Konsep dasar Continuous Integration, Continuous Delivery/Deployment, perbandingan tools (GitHub Actions vs Jenkins vs GitLab CI), dan arsitektur pipeline.

## Apa itu CI/CD?

**CI/CD** adalah metodologi inti dalam DevOps yang mengotomatisasi seluruh proses pengujian (*testing*), perakitan (*build*), dan pengiriman (*deployment*) kode dari tangan pengembang hingga berjalan di server produksi.

Tujuan utamanya adalah **menghilangkan kesalahan manual manusia (*human error*)**, memperpendek waktu rilis fitur, dan memastikan sistem selalu berada dalam status siap rilis (*always releasable*).

***

## Dua Fase Utama CI/CD

```mermaid theme={null}
flowchart LR
    Dev["Developer Git Push"] --> CI["Continuous Integration (CI)\n- Lint Check\n- Automated Test\n- Build Image"]
    CI --> CDeliv["Continuous Delivery\n(Otomatis ke Staging +\nManual Approval ke Prod)"]
    CI --> CDeploy["Continuous Deployment\n(100% Otomatis ke Produksi)"]
```

### 1. Continuous Integration (CI)

Setiap kali pengembang melakukan `git push` atau membuka *Pull Request (PR)*:

* Server CI secara otomatis menarik salinan kode terbaru.
* Menjalankan analisis keamanan dan gaya penulisan kode (*Linter*).
* Menjalankan ribuan pengujian otomatis (*Unit Test & Integration Test*).
* Mengompilasi kode atau merakit Docker Image.
  Jika ada satu saja pengujian yang gagal, pipeline akan merah (gagal) dan kode dicegah agar tidak masuk ke cabang utama (`main`).

### 2. Continuous Delivery vs Deployment (CD)

* **Continuous Delivery:** Setelah lulus CI, kode otomatis di-deploy ke lingkungan *Staging*. Pemasangan ke server *Produksi* memerlukan satu kali klik persetujuan (*Approval*) dari lead engineer.
* **Continuous Deployment:** Tidak ada klik manual sama sekali. Setiap commit yang lolos seluruh tes di cabang `main` akan langsung disebarkan ke server produksi dalam hitungan menit.

***

## Perbandingan Tools CI/CD Populer

Ada banyak perangkat lunak CI/CD di industri. Berikut tabel komparasi antara **GitHub Actions**, **Jenkins**, dan **GitLab CI**:

| Fitur / Parameter | GitHub Actions | Jenkins | GitLab CI/CD |
| :- | :- | :- | :- |
| **Model Hosting** | Cloud (SaaS) bawaan GitHub / Self-hosted runner | Murni Self-Hosted (Server sendiri) | Cloud (SaaS) / Self-Hosted |
| **Bahasa Konfigurasi** | YAML (`.github/workflows/*.yml`) | Groovy / Jenkinsfile / GUI | YAML (`.gitlab-ci.yml`) |
| **Kemudahan Setup** | Sangat Mudah (Langsung aktif di repo) | Butuh Setup Server & Plugin rumit | Mudah (Terintegrasi di GitLab) |
| **Ekosistem & Reusability** | GitHub Marketplace (Ribuan aksi siap pakai) | Ribuan Plugin komunitas Jenkins | Auto DevOps / Component Catalog |
| **Kebutuhan Server** | Disediakan mesin virtual gratis oleh GitHub | Wajib punya VPS/Server sendiri | Runner disediakan kuota gratis / custom |
| **Kelebihan Utama** | Ekosistem open-source luas, native di GitHub | Kontrol penuh, kustomisasi tak terbatas | Manajemen end-to-end terintegrasi di GitLab |
| **Kekurangan** | Kuota menit gratis terbatas untuk private repo | Perawatan plugin rentan error saat upgrade | Terikat kuat dengan platform GitLab |

***

## Kapan Memilih Jenkins vs GitHub Actions?

* **Pilih GitHub Actions jika:**
  * Repositori kodemu sudah berada di GitHub.
  * Ingin langsung membuat pipeline tanpa pusing memikirkan instalasi dan pemeliharaan server CI khusus.
  * Menginginkan ribuan integrasi siap pakai dari GitHub Marketplace (misal: login AWS, build Docker, kirim notifikasi Telegram/Discord).

* **Pilih Jenkins jika:**
  * Bekerja di perusahaan dengan regulasi ketat (*On-Premise data center*) yang dilarang menggunakan cloud pihak ketiga.
  * Membutuhkan kontrol penuh atas seluruh infrastruktur eksekutor dan penyimpanan internal.
  * Memiliki alur pipeline lama yang sangat kompleks dan memerlukan plugin kustom mendalam.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.