tutorial, git,

GitHub Organizations: Manajemen Repository dan Akses untuk Tim

Kiki/🎮🍉⌨️🍩💻 Kiki/🎮🍉⌨️🍩💻 Sep 26, 2026 · 5 mins read
GitHub Organizations: Manajemen Repository dan Akses untuk Tim
Share this

Ketika bekerja sendirian, sebuah akun GitHub personal sudah lebih dari cukup. Tapi begitu kamu memimpin tim atau membangun startup, kamu butuh cara yang lebih terstruktur untuk mengelola banyak repository, mengatur siapa yang bisa mengakses apa, dan menstandarkan proses di seluruh tim. Di sinilah GitHub Organizations berperan.


Apa itu GitHub Organizations?

GitHub Organization adalah akun bersama di GitHub yang bisa dimiliki oleh beberapa orang. Repository, team, dan pengaturan dikelola di bawah satu atap organisasi — bukan di akun personal anggota.

Keuntungan Organizations vs Personal Account:

  • Repository milik org, bukan personal — tidak hilang jika anggota pergi
  • Kontrol akses yang granular per tim dan per repository
  • Audit log semua aktivitas
  • Fitur keamanan tambahan (SAML SSO, IP allowlist di plan berbayar)

Membuat dan Setup Organization

  1. Klik foto profil → Your organizations → New organization
  2. Pilih plan (Free sudah sangat powerful untuk tim kecil)
  3. Isi nama org dan email billing

Pengaturan Awal yang Disarankan

Di Organization Settings:

Member privileges:
  ✅ Default repository permission: Read (anggota bisa lihat semua repo)
  ✅ Allow members to create repositories: Internal/Private only
  ✅ Allow forking of private repositories: sesuai kebutuhan

Repository defaults:
  ✅ Default branch: main
  ✅ Require signed commits

Security:
  ✅ Require two-factor authentication for everyone

Teams — Grup Akses yang Terorganisir

Teams adalah cara mengelompokkan anggota dan memberikan mereka akses ke sekumpulan repository.

Struktur Teams yang Umum

Organization: startup-kita
├── @startup-kita/backend-team
│   ├── repo: api-service
│   ├── repo: database-migrations
│   └── permission: Write
├── @startup-kita/frontend-team
│   ├── repo: web-app
│   └── permission: Write
├── @startup-kita/devops
│   ├── repo: infrastructure
│   ├── repo: api-service (juga)
│   └── permission: Admin
└── @startup-kita/read-only-stakeholders
    ├── semua repo
    └── permission: Read

Membuat Team via GitHub CLI

# Install GitHub CLI: https://cli.github.com

# Buat team
gh api orgs/startup-kita/teams \
  --method POST \
  -f name="backend-team" \
  -f description="Tim Backend" \
  -f privacy="closed"

# Tambahkan member ke team
gh api orgs/startup-kita/teams/backend-team/memberships/username \
  --method PUT \
  -f role="member"

# Berikan team akses ke repository
gh api orgs/startup-kita/teams/backend-team/repos/startup-kita/api-service \
  --method PUT \
  -f permission="push"

Permission Levels

Level Hak Akses
Read Clone, pull, buka issues
Triage Read + kelola issues/PR tanpa bisa push
Write Read + push ke branch non-protected
Maintain Write + kelola repo settings (kecuali sensitif)
Admin Full access termasuk hapus repo

Repository Settings untuk Tim

Branch Protection Rules

Branch: main
✅ Require a pull request before merging
  ✅ Required approvals: 2
  ✅ Dismiss stale reviews when new commits pushed
  ✅ Require review from Code Owners
✅ Require status checks to pass
  ✅ CI / test
  ✅ CI / lint
✅ Require branches to be up to date before merging
✅ Require signed commits
✅ Include administrators (jangan bisa bypass)
✅ Restrict who can push to matching branches
  → Allow: @startup-kita/devops

CODEOWNERS per Repository

# .github/CODEOWNERS
*                   @startup-kita/tech-leads
/src/               @startup-kita/backend-team
/frontend/          @startup-kita/frontend-team
/infrastructure/    @startup-kita/devops
*.sql               @startup-kita/dba-team

Monorepo vs Multirepo

Multirepo (Default)

Satu repository per service/aplikasi:

github.com/startup-kita/api-service
github.com/startup-kita/web-app
github.com/startup-kita/mobile-app
github.com/startup-kita/infrastructure

Keuntungan: Isolasi yang jelas, permission per repo mudah, CI/CD independen

Kerugian: Sulit berbagi kode antar repo, perubahan lintas-repo butuh banyak PR

Monorepo

Semua kode dalam satu repository:

github.com/startup-kita/monorepo
├── apps/
│   ├── api/
│   ├── web/
│   └── mobile/
├── packages/
│   ├── shared-types/
│   ├── ui-components/
│   └── utils/
└── infrastructure/

Keuntungan: Mudah berbagi kode, atomic commit lintas aplikasi, satu PR bisa update semua

Kerugian: Repository besar, CI/CD lebih kompleks, butuh tool khusus (Nx, Turborepo)

Tool populer untuk Monorepo:

  • Nx — untuk JavaScript/TypeScript
  • Turborepo — dari Vercel, lebih ringan
  • Lerna — khusus untuk npm packages
  • Bazel — untuk polyglot (multi-bahasa)

Audit Log dan Keamanan

Di Organization Settings → Audit log:

Semua aktivitas tercatat:
- Siapa yang di-add/remove dari tim
- Repository yang dibuat/dihapus
- Permission yang diubah
- Secret yang diakses
- Branch protection yang diubah

Security Best Practices untuk Organizations

# 1. Wajibkan 2FA untuk semua anggota
# Settings → Authentication security → Require two-factor authentication

# 2. Review anggota secara berkala
gh api orgs/startup-kita/members --paginate | jq '.[].login'

# 3. Hapus anggota yang sudah tidak aktif
gh api orgs/startup-kita/members/username --method DELETE

# 4. Review OAuth apps yang punya akses ke org
# Settings → Third-party access → OAuth app policy

GitHub Actions untuk Organization-Wide Policies

Buat reusable workflows di repository khusus (.github repository) yang bisa dipanggil oleh semua repository di org:

# di repo: startup-kita/.github
# file: workflow-templates/ci-template.yml

name: CI Template
on:
  workflow_call:
    inputs:
      node-version:
        required: false
        type: string
        default: '20'

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: $
      - run: npm ci
      - run: npm test

Di repository lain dalam org:

jobs:
  ci:
    uses: startup-kita/.github/.github/workflows/ci-template.yml@main
    with:
      node-version: '20'

Kesimpulan

GitHub Organizations memberikan fondasi yang kuat untuk mengelola kode dan kolaborasi di tingkat perusahaan. Dengan Teams, Branch Protection Rules, dan CODEOWNERS, kamu bisa memastikan kode yang masuk ke production sudah melalui proses review yang tepat oleh orang yang tepat.

Di artikel berikutnya, kita bahas GitHub Actions untuk CI/CD — membangun pipeline otomatis untuk testing dan deployment langsung dari GitHub.

Kiki/🎮🍉⌨️🍩💻
Written by Kiki/🎮🍉⌨️🍩💻
hello I'm friend K.