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.

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 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.
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.
Versioning yang baik memungkinkan pengguna tahu dampak sebuah rilis hanya dari nomornya. Semantic Versioning (SemVer) menjawab ini dengan format v1.2.3.
| Komponen | Naik ketika |
|---|---|
| MAJOR | Ada perubahan yang merusak kompatibilitas |
| MINOR | Ada fitur baru yang tetap kompatibel ke belakang |
| PATCH | Ada 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.
Tag adalah penanda titik tertentu dalam riwayat. Ada dua jenis:
git tag -a v1.0.0 -m "Release v1.0.0"Melihat daftar tag: git tag -n. Tag tidak ter-push secara otomatis:
git push origin v1.0.0
git push origin --tagsWarning
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 Release adalah wrapper di atas tag: menampung release notes dan binary asset. Cara tercepat lewat gh:
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.
Perjalanan dari episode 0 sampai 20 terbagi dalam enam fase. Setiap fase membangun fondasi fase berikutnya:
| Fase | Episode | Fokus |
|---|---|---|
| 1. Prasyarat & Fundamental | 0-2 | Setup environment, sejarah VCS, arsitektur Git |
| 2. Operasi Dasar Lokal | 3-5 | Init & tracking, commit & log, diff & inspeksi |
| 3. Branch, Merge & Remote | 6-9 | Branching, merge & konflik, remote GitHub, kolaborasi |
| 4. Workflow & Fitur GitHub | 10-13 | Workflow tim, PR & code review, issues, keamanan |
| 5. Konsep Lanjutan | 14-17 | Undoing changes, stash & clean, rebase interaktif, navigasi |
| 6. Ekosistem Modern & Produksi | 18-20 | Submodule & subtree, hooks, GitHub automation |
Berikut alur lengkap yang menggabungkan semua yang sudah dipelajari:
git switch -c) dan tulis pesan conventional commit.gh pr create (episode 11), dan tunggu status checks CI hijau.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-notesNote
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.
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/workflows/ci.yml yang ter-trigger pada push dan PR.v1.2.3 memandu angka versi; conventional commits memberi input otomatis untuk changelog.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.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!