GitHub & GitLab Fundamentals
Memahami repository, organisasi, issue, branch protection, release, package registry, dan pengaturan akses di GitHub serta GitLab.
GitHub dan GitLab sama-sama platform kolaborasi di atas Git. Keduanya menyediakan repository, review, CI/CD, registry, dan manajemen akses, dengan istilah dan penekanan yang sedikit berbeda.
Perbandingan konsep
| Konsep | GitHub | GitLab |
|---|---|---|
| Repository | Repository | Project |
| Organisasi | Organization | Group |
| Tim | Team | Group/Subgroup |
| Issue | Issues | Issues |
| Review | Pull Request (PR) | Merge Request (MR) |
| CI/CD | GitHub Actions | GitLab CI/CD |
| Registry | GitHub Packages / GHCR | GitLab Container Registry |
| Wiki | Wiki | Wiki |
| Board | Projects | Issue Boards |
Repository
Struktur repository yang sehat:
repo/
├─ .github/workflows/ # GitHub Actions
├─ .gitlab-ci.yml # GitLab CI
├─ src/
├─ tests/
├─ Dockerfile
├─ .dockerignore
├─ .gitignore
└─ README.mdBranch utama
main— branch produksi, dilindungi.develop— opsional untuk Git Flow.feature/*,fix/*,hotfix/*— branch kerja.release/*— opsional untuk rilis terjadwal.
Issue dan perencanaan
Issue mendokumentasikan bug, fitur, dan tugas. Kebiasaan baik:
- Judul jelas dan spesifik.
- Deskripsi berisi konteks, langkah reproduksi, dan ekspektasi.
- Label:
bug,enhancement,documentation,priority:high. - Assignee dan milestone.
- Tautkan issue ke PR/MR (
Closes #42).
Contoh template issue bug:
## Deskripsi
Endpoint /health mengembalikan 500 setelah deploy.
## Langkah reproduksi
1. Deploy versi 1.4.0
2. curl https://app.example.com/health
3. Amati status 500
## Ekspektasi
Status 200 dengan body {"status":"ok"}Branch protection
Lindungi branch utama agar tidak bisa diubah sembarangan.
GitHub
Settings → Branches → Add branch protection rule:
- Require a pull request before merging.
- Require approvals (mis. 1–2).
- Require status checks to pass.
- Require conversation resolution.
- Restrict who can push.
- Require linear history (opsional).
GitLab
Settings → Repository → Protected branches:
- Allowed to merge: Maintainers.
- Allowed to push: No one.
- Require approval.
Branch protection adalah kontrol penting, bukan formalitas. Tanpa ini, semua otomasi dan review bisa dilewati.
Code owners
GitHub CODEOWNERS
* @org/backend-team
/src/api/ @org/api-team
/infra/ @org/platform-teamGitLab CODEOWNERS
GitLab mendukung code owners di tier tertentu. Pastikan tim yang tepat otomatis diminta review untuk area kritis.
Release dan tag
GitHub Releases
- Buka Releases → Draft a new release.
- Pilih tag (
v1.4.0). - Isi changelog.
- Lampirkan artifact bila perlu.
- Publikasikan.
GitLab Releases
release:
stage: deploy
script:
- echo "Membuat release"
release:
tag_name: v1.4.0
description: "Rilis 1.4.0"Registry
GitHub Container Registry (GHCR)
echo "$GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
docker tag myapp:1.0.0 ghcr.io/USERNAME/myapp:1.0.0
docker push ghcr.io/USERNAME/myapp:1.0.0GitLab Container Registry
echo "$CI_JOB_TOKEN" | docker login registry.gitlab.com -u USERNAME --password-stdin
docker tag myapp:1.0.0 registry.gitlab.com/GROUP/PROJECT:1.0.0
docker push registry.gitlab.com/GROUP/PROJECT:1.0.0Hak akses
| Peran GitHub | Peran GitLab | Kemampuan umum |
|---|---|---|
| Read | Reporter | Lihat kode dan issue |
| Triage | Developer | Kelola issue |
| Write | Developer | Push dan merge |
| Maintain | Maintainer | Kelola repo dan setting |
| Admin | Owner | Semua akses |
Gunakan least privilege dan autentikasi dua faktor.
Webhook dan integrasi
Webhook memungkinkan platform memberi tahu sistem lain saat ada push, PR, atau release.
Contoh payload push dapat memicu:
- Deployment otomatis.
- Notifikasi Slack/Telegram.
- Sinkronisasi mirror repository.
- Scan keamanan.
Praktik: menyiapkan repository produksi
- Buat repository dan README.
- Tambahkan
.gitignore,.dockerignore, dan template PR/MR. - Lindungi
maindengan review dan status check. - Tambahkan
CODEOWNERS. - Aktifkan secret scanning dan dependency alerts.
- Siapkan environment
stagingdanproduction. - Simpan konfigurasi CI di repository.
- Dokumentasikan alur rilis di README.
Ringkasan
- GitHub dan GitLab menyediakan repository, issue, review, CI/CD, dan registry.
- Branch protection dan code owners menjaga kualitas branch utama.
- Release/tag membuat versi dapat dilacak.
- Registry menyimpan image container untuk deployment.
Selanjutnya
Perdalam kolaborasi di Pull Request, Merge Request & Code Review.