Belajar Git - GitHub Automation Ecosystem (GitHub Actions, GitHub CLI & SemVer Releases)
Episode 20 of 21

Belajar Git - GitHub Automation Ecosystem (GitHub Actions, GitHub CLI & SemVer Releases)

Menutup seri Belajar Git dan GitHub: GitHub Actions untuk CI dan CD otomatis, Semantic Versioning v1.2.3, annotated tag dan GitHub Releases dengan GitHub CLI, plus rekap seluruh 21 episode dari fase pertama sampai produksi.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 19 kita mengotomasi kualitas lokal dengan Git hooks. Episode 20 ini adalah episode terakhir, dan kita menutup dengan mengotomasi seluruh siklus hidup: dari push, tes, build, sampai rilis. Tiga komponen menjadi inti: GitHub Actions untuk CI/CD, Semantic Versioning dan Git Tags untuk versi, serta GitHub Releases untuk distribusi — semuanya bisa dikendalikan dari terminal lewat GitHub CLI.

Perjalanan akan terasa lengkap setelah ini: kalian mulai dari git init di episode 0 dan kini mengoperasikan pipeline rilis production end-to-end dari sebuah file YAML di dalam repository. Git versi 2.4x (2026) dan GitHub sebagai platform kolaborasi sudah menjadi fondasi kerja kalian — episode ini menyatukan semuanya.

GitHub Actions: CI/CD di Dalam Repository

GitHub Actions menjalankan pekerjaan otomatis berdasarkan event di repositori — push, pull request, atau jadwal. Workflow didefinisikan sebagai file YAML di .github/workflows/, di-commit seperti kode biasa.

.github/workflows/ci.yml
name: CI
on:
  push:
    branches: [main, staging]
  pull_request:
    branches: [main]
 
permissions:
  contents: read
 
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout kode
        uses: actions/checkout@v4
 
      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: 1.2
 
      - name: Install dependensi
        run: bun install --frozen-lockfile
 
      - name: Lint dan build
        run: |
          bun run lint
          bun run build
 
      - name: Deploy preview untuk staging
        if: github.ref == 'refs/heads/staging'
        run: echo "Deploy preview untuk ${{ github.ref }}"
 
      - name: Upload artifact build
        uses: actions/upload-artifact@v4
        with:
          name: build
          path: out/

Workflow ini ter-trigger otomatis saat push ke main atau staging, dan saat PR diarahkan ke main. Setiap jobs berjalan di runner, dan steps dieksekusi berurutan. Ekspresi kontekstual seperti github.ref atau github.event_name dibaca runner saat step dieksekusi — nilainya tidak pernah tertulis langsung di file. Secret yang disimpan di GitHub juga bisa dibaca step memakai ekspresi yang sama; pastikan nilai sensitif tidak pernah tercetak di log.

Tip

Satu pola yang terbukti untuk project seri ini: CI memvalidasi (lint, test, build) dan menulis ke Git; CD membaca dari Git dan men-deploy. Pisahkan keduanya di workflow berbeda agar kegagalan build tidak pernah menimpa environment production.

Semantic Versioning

Versioning yang baik memungkinkan pengguna tahu dampak sebuah rilis hanya dari nomornya. Semantic Versioning (SemVer) menjawab ini dengan format v1.2.3.

KomponenNaik ketika
MAJORAda perubahan yang merusak kompatibilitas
MINORAda fitur baru yang tetap kompatibel ke belakang
PATCHAda perbaikan bug tanpa fitur baru

Untuk pra-rilis, SemVer mengizinkan sufiks seperti 1.2.3-rc.1 — pola yang cocok untuk branch staging dengan prerelease rc sesuai alur rilis repository ini. Kuncinya: conventional commits (episode 4) menyediakan input otomatis — feat: menaikkan MINOR, fix: menaikkan PATCH, dan breaking change menaikkan MAJOR.

Git Tags

Tag adalah penanda titik tertentu dalam riwayat. Ada dua jenis:

  • Lightweight tag — hanya pointer ke commit, tanpa metadata.
  • Annotated tag — objek lengkap dengan pesan, tagger, dan tanggal; direkomendasikan untuk rilis.
Membuat annotated tag
git tag -a v1.0.0 -m "Release v1.0.0"

Melihat daftar tag: git tag -n. Tag tidak ter-push secara otomatis:

Push tag ke remote
git push origin v1.0.0
git push origin --tags

Warning

Tag yang sudah di-push dan dipakai orang lain tidak boleh diubah. Menghapus dan mengganti tag yang sama bisa membingungkan konsumen rilis dan merusak jejak audit. Buat tag baru, jangan menulis ulang yang lama.

GitHub Releases dengan GitHub CLI

GitHub Release adalah wrapper di atas tag: menampung release notes dan binary asset. Cara tercepat lewat gh:

Membuat GitHub Release
gh release create v1.0.0 --generate-notes
gh release create v1.0.0 ./dist/*.zip --title "v1.0.0" --notes "Rilis stabil pertama"

--generate-notes menyusun changelog otomatis dari conventional commits antar tag. Kelola rilis selanjutnya: gh release list dan gh release view v1.0.0. Di UI, halaman Release bisa menyertakan kode sumber zip, asset biner, dan catatan rilis — dipakai tim lain untuk men-download versi tertentu.

Rekap Seluruh Seri (21 Episode)

Perjalanan dari episode 0 sampai 20 terbagi dalam enam fase. Setiap fase membangun fondasi fase berikutnya:

FaseEpisodeFokus
1. Prasyarat & Fundamental0-2Setup environment, sejarah VCS, arsitektur Git
2. Operasi Dasar Lokal3-5Init & tracking, commit & log, diff & inspeksi
3. Branch, Merge & Remote6-9Branching, merge & konflik, remote GitHub, kolaborasi
4. Workflow & Fitur GitHub10-13Workflow tim, PR & code review, issues, keamanan
5. Konsep Lanjutan14-17Undoing changes, stash & clean, rebase interaktif, navigasi
6. Ekosistem Modern & Produksi18-20Submodule & subtree, hooks, GitHub automation

Checklist Produksi End-to-End

Berikut alur lengkap yang menggabungkan semua yang sudah dipelajari:

  • Kerjakan fitur di branch terpisah (git switch -c) dan tulis pesan conventional commit.
  • Push branch, buat PR dengan gh pr create (episode 11), dan tunggu status checks CI hijau.
  • Branch Protection Rules memaksa review sebelum merge (episode 13).
  • Setelah merge, CI menjalankan lint, test, dan build otomatis.
  • Rilis dimulai dari annotated tag sesuai SemVer, lalu Release dibuat dari tag.
Alur rilis produksi end-to-end
git switch -c feat/login-page
git add . && git commit -m "feat: tambah halaman login"
git push -u origin feat/login-page
gh pr create --fill
gh pr merge --squash
git tag -a v1.2.3 -m "Release v1.2.3"
git push origin v1.2.3
gh release create v1.2.3 --generate-notes

Note

Otomasi meringankan manusia, bukan menggantikan penilaiannya. Lint, test, dan build bisa dijalankan mesin; tapi keputusan apakah sebuah perubahan layak rilis, apakah breaking change memang perlu, dan bagaimana menulis release notes yang jelas — itu tetap pekerjaan kalian.

Penutup

Episode ini menutup seri dengan tiga komponen inti ekosistem otomasi: GitHub Actions untuk CI/CD dari file YAML di dalam repository, Semantic Versioning v1.2.3 dengan annotated tag dan git push origin --tags, serta GitHub Releases yang diterbitkan lewat gh release create — plus rekap seluruh 21 episode dalam enam fase dan checklist produksi end-to-end.

Poin yang harus kalian bawa:

  • GitHub Actions mengotomasi CI/CD dari .github/workflows/ci.yml yang ter-trigger pada push dan PR.
  • SemVer v1.2.3 memandu angka versi; conventional commits memberi input otomatis untuk changelog.
  • Annotated tag (git tag -a) menyimpan metadata rilis; push eksplisit dengan git push origin v1.0.0.
  • gh release create menerbitkan Release beserta notes dan asset dari sebuah tag.
  • Otomasi menangani yang berulang; manusia tetap pemegang keputusan.

Dari episode 0 sampai 20, kalian telah menempuh perjalanan lengkap: menyiapkan skill dan environment, memahami arsitektur Git dan cara kerjanya, menguasai commit, branching, merge, dan konflik, berkolaborasi lewat remote, PR, dan code review, mengamankan repository dengan branch protection, menata ulang dan menyelamatkan riwayat, mengelola repository majemuk, mengotomasi kualitas lokal, sampai mengoperasikan pipeline rilis production. Git kini bukan lagi sekadar perintah — ia adalah cara berpikir tentang perubahan yang bisa ditelusuri, dibatalkan, dan diotomasi. Selamat, kalian kini memahami Git dan GitHub secara utuh — dan yang lebih penting, kalian punya fondasi untuk terus belajar. Sampai jumpa di seri berikutnya!

Belajar Git - GitHub Automation Ecosystem (GitHub Actions, GitHub CLI & SemVer Releases) | Belajar Git & GitHub