Paket 2 · Praktik LanjutanModul A — Git, GitHub & GitLab

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

KonsepGitHubGitLab
RepositoryRepositoryProject
OrganisasiOrganizationGroup
TimTeamGroup/Subgroup
IssueIssuesIssues
ReviewPull Request (PR)Merge Request (MR)
CI/CDGitHub ActionsGitLab CI/CD
RegistryGitHub Packages / GHCRGitLab Container Registry
WikiWikiWiki
BoardProjectsIssue Boards

Repository

Struktur repository yang sehat:

repo/
├─ .github/workflows/      # GitHub Actions
├─ .gitlab-ci.yml          # GitLab CI
├─ src/
├─ tests/
├─ Dockerfile
├─ .dockerignore
├─ .gitignore
└─ README.md

Branch 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-team

GitLab CODEOWNERS

GitLab mendukung code owners di tier tertentu. Pastikan tim yang tepat otomatis diminta review untuk area kritis.

Release dan tag

GitHub Releases

  1. Buka Releases → Draft a new release.
  2. Pilih tag (v1.4.0).
  3. Isi changelog.
  4. Lampirkan artifact bila perlu.
  5. 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.0

GitLab 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.0

Hak akses

Peran GitHubPeran GitLabKemampuan umum
ReadReporterLihat kode dan issue
TriageDeveloperKelola issue
WriteDeveloperPush dan merge
MaintainMaintainerKelola repo dan setting
AdminOwnerSemua 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

  1. Buat repository dan README.
  2. Tambahkan .gitignore, .dockerignore, dan template PR/MR.
  3. Lindungi main dengan review dan status check.
  4. Tambahkan CODEOWNERS.
  5. Aktifkan secret scanning dan dependency alerts.
  6. Siapkan environment staging dan production.
  7. Simpan konfigurasi CI di repository.
  8. 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

On this page