Memahami mengapa GitLab CI/CD menjadi pilihan utama di enterprise karena satu platform all-in-one, lalu membedah arsitektur intinya: GitLab Server, GitLab Runner, dan file deklaratif .gitlab-ci.yml beserta hierarki stages, jobs, dan scripts.

Di episode 0 kalian sudah menyiapkan tiga fondasi skill — Git & GitLab workflow, YAML, dan bash — plus environment lengkap dengan glab dan VS Code. Sekarang saatnya berhenti mengetik sejenak dan memahami mengapa kita semua ada di sini. Sebelum menulis .gitlab-ci.yml pertama, kalian harus paham betul bagaimana arsitektur GitLab dirancang, bagaimana komponen-komponennya bekerja sama, dan mengapa GitLab CI menjadi pilihan utama di perusahaan enterprise.
Percaya atau tidak, kesalahan terbesar yang dilakukan pemula adalah langsung menulis YAML pipeline tanpa memahami arsitekturnya — akibatnya pipeline jadi kumpulan perintah copy-paste yang sulit dirawat dan sulit di-debug. Episode ini membangun fondasi konseptual tersebut.
GitLab dimulai pada tahun 2011 sebagai tool Git hosting open source, dan pada tahun 2016 merilis CI/CD terintegrasi pertama yang berjalan langsung di dalam platform. Bedanya dengan tool lain: GitLab adalah single application all-in-one — bukan kumpulan tool yang disambung-sambung dengan webhook. Dalam satu platform kalian mendapatkan:
Analoginya seperti restoran: di tool tradisional kalian harus menyewa pemasok terpisah untuk bahan, koki, dan kasir. Di GitLab semuanya ada di satu dapur — bahan masuk dari commit, masakan diuji pipeline, dan disajikan lewat deployment, semuanya dalam satu aplikasi. Inilah alasan utama tim enterprise memilih GitLab: satu alur kerja, satu sumber kebenaran, satu tim yang mengelolanya.
Ada tiga komponen inti yang harus kalian pahami selamanya:
.gitlab-ci.yml — file deklaratif di root repository yang mendeskripsikan seluruh pipeline. File ini adalah "resep masakan": jika ada di repository, GitLab otomatis membacanya dan mengeksekusinya setiap kali ada event.| Komponen | Peran | Analogi |
|---|---|---|
| GitLab Server | Metadata, UI, trigger pipeline | Manajer restoran |
| GitLab Runner | Mengeksekusi job | Koki |
.gitlab-ci.yml | Definisi pipeline | Resep masakan |
Saat sebuah commit di-push, alur yang terjadi adalah:
Developer push commit ke GitLab
|
v
GitLab Server mendeteksi .gitlab-ci.yml
|
v
Server membuat pipeline dan memasukkan job ke queue
|
v
Runner mengambil job, checkout kode, eksekusi script
|
v
Runner kirim log dan status kembali ke GitLab Server
|
v
Status tampil di UI, merge request, dan notifikasiDi dalam .gitlab-ci.yml, pipeline dieksekusi berdasarkan hierarki tiga tingkat:
build → test → deploy. Semua job di stage yang sama berjalan paralel; stage berikutnya baru mulai setelah seluruh job di stage sebelumnya sukses.unit_test dan job lint yang sama-sama berada di stage test.stages:
- build
- test
- deploy
unit_test:
stage: test
script:
- npm testBisa kalian lihat polanya: stages mendefinisikan urutan, unit_test adalah sebuah job yang ditaruh di stage test, dan npm test adalah script yang dijalankan. Gambaran mental sederhananya: pipeline adalah bangunan, stages adalah lantainya, jobs adalah ruangan di tiap lantai, dan scripts adalah pekerjaan yang dilakukan di dalam ruangan tersebut.
Agar posisi GitLab jelas, mari bandingkan dengan dua pesaing utamanya:
| Aspek | GitLab CI | GitHub Actions | Jenkins |
|---|---|---|---|
| Model hosting | Cloud (SaaS) atau self-hosted | Cloud-native, dikelola GitHub | Self-hosted (perlu server sendiri) |
| Definisi pipeline | .gitlab-ci.yml (YAML) | .github/workflows (YAML) | Jenkinsfile (Groovy) |
| Integrasi dengan VCS | Native di GitLab | Native di GitHub | Butuh plugin dan webhook |
| Platform all-in-one | Ya (SCM, issues, registry, security) | Sebagian (SCM + Actions) | Tidak (hanya CI/CD) |
| Runner | GitLab-hosted, shared, self-hosted | GitHub-hosted + self-hosted | Agent yang diurus sendiri |
| Cocok untuk | Tim yang ingin satu platform end-to-end | Tim yang sudah hidup di GitHub | Tim besar dengan infrastruktur sendiri |
Tidak ada pilihan yang salah mutlak — Jenkins tetap jago untuk kontrol penuh, GitHub Actions unggul bagi tim di ekosistem GitHub. GitLab CI dipilih ketika kalian ingin satu aplikasi menangani seluruh alur pengembangan, dari repository hingga security dashboard, tanpa biaya integrasi antar tool.
Note
Istilah "stage", "job", "script", dan "runner" akan menjadi kosakata harian kalian. Jangan khawatir jika masih abstrak — mulai episode 2 kita akan menulis semua konsep ini menjadi file YAML yang benar-benar berjalan.
Pada episode 1 ini kalian telah membangun fondasi konseptual yang penting:
.gitlab-ci.yml sebagai definisi deklaratif pipeline.Sekarang kalian tahu bagaimana arsitekturnya, saatnya memahami bagaimana menulisnya. Di episode 2 kita akan membuat .gitlab-ci.yml pertama dengan syntax dasar: keyword global, definisi stages, struktur job, inline dan multi-line script, serta allow_failure untuk menangani error. Sampai jumpa di episode 2!