- Bab 7 dari 8
- 35 menit
- 4 soal kuis
GitHub Actions, Pages, Releases, dan Keamanan Repository
Di bab ini (9 bagian)
Tujuan bab ini
- Membaca dan menulis workflow GitHub Actions sederhana yang menjalankan test Node.js di setiap push dan pull request.
- Menerbitkan situs lewat GitHub Pages dan menandai versi dengan tag serta Releases.
- Mengaktifkan fitur keamanan dasar: Dependabot, secret scanning, branch protection, dan GitHub Secrets.
- Memakai GitHub CLI
ghdan Gist, serta memahami Copilot, organisasi, dan tingkat hak akses.
GitHub Actions: robot yang kerja tiap ada push
Bayangkan setiap kali ada pull request, robot otomatis meng-clone repo, memasang dependensi, lalu menjalankan semua test. Kalau ada yang gagal, tanda silang merah muncul di PR sebelum siapa pun menekan merge. Itulah GitHub Actions, layanan CI/CD (continuous integration / continuous delivery) bawaan GitHub.
Workflow ditulis dalam file YAML di folder .github/workflows/ di dalam repo. Nama file bebas, misalnya ci.yml. Contoh CI untuk proyek Node.js:
Bedah satu per satu:
on: event pemicu. Di sini workflow jalan saat ada push kemaindan saat ada pull request yang menujumain. Event lain misalnyaschedule(jadwal cron) danworkflow_dispatch(tombol jalankan manual).jobs: kumpulan pekerjaan. Tiap job jalan di mesin terpisah dan secara default job-job berjalan paralel.runs-on: jenis runner, mesin virtual yang disediakan GitHub. Pilihannya antara lainubuntu-latest,windows-latest, danmacos-latest.steps: urutan langkah dalam job. Langkahusesmemakai action siap pakai dari Marketplace, sedangkanrunmenjalankan perintah shell.actions/checkout@v4mengunduh isi repo ke runner; tanpa ini runner tidak punya kodemu.actions/setup-node@v4memasang Node.js versi yang kamu minta lewatwith.npm cimemasang dependensi persis sesuaipackage-lock.json, lalunpm testmenjalankan test.
Angka @v4 adalah versi mayor action. Versi baru bisa keluar (misalnya v5), jadi cek halaman action di Marketplace sesekali. YAML memakai spasi, bukan tab, jadi jaga indentasi.
Hasil tiap run tampil di tab Actions dan sebagai status check di pull request. Untuk repo publik, runner standar GitHub gratis; repo privat mendapat kuota menit gratis per bulan sesuai paket akun.
GitHub Pages dan Releases
GitHub Pages adalah hosting gratis untuk situs statis (HTML, CSS, JS) langsung dari repo. Cocok buat portofolio atau tugas kuliah berbentuk web. Aktifkan di Settings › Pages, lalu pada bagian Build and deployment pilih sumbernya:
- Deploy from a branch: pilih branch (misalnya
main) dan folder (/ (root)atau/docs). Paling gampang untuk situs HTML biasa. - GitHub Actions: situs dibangun oleh workflow, cocok untuk proyek yang perlu build dulu seperti Vite, Astro, atau Hugo.
Situs terbit di https://username.github.io/nama-repo. Repo khusus bernama username.github.io menjadi situs utama di https://username.github.io. Domain kustom dan HTTPS juga didukung.
Releases menandai versi yang siap dipakai orang. Dasarnya adalah tag Git (detailnya ada di kelas Git):
Setelah tag sampai di GitHub, buka bagian Releases di halaman repo, buat release baru, pilih tag v1.0.0, lalu tulis release notes. Tombol Generate release notes bisa menyusun daftar PR yang masuk sejak rilis sebelumnya secara otomatis. Gunakan Semantic Versioning MAJOR.MINOR.PATCH: naikkan PATCH untuk perbaikan bug, MINOR untuk fitur baru yang tidak merusak, MAJOR untuk perubahan yang merusak kompatibilitas.
Keamanan repository
Repo publik dibaca siapa saja, termasuk bot pemburu kunci API. Fitur keamanan yang wajib kamu kenal:
- Dependabot alerts memberi peringatan bila ada dependensi dengan celah keamanan yang diketahui. Dependabot security updates membuka PR otomatis untuk menaikkan versi yang rentan. Untuk pembaruan versi rutin, tambahkan file
.github/dependabot.yml. - Secret scanning mendeteksi token atau kunci API yang ter-commit. Dengan push protection, push yang berisi secret yang dikenali bahkan diblokir sebelum masuk.
- Branch protection rules (di Settings › Branches, atau versi barunya, rulesets) melarang push langsung ke
main, mewajibkan pull request, minimal sekian approval, dan status check CI yang lulus sebelum merge. - GitHub Secrets menyimpan kredensial terenkripsi untuk dipakai workflow, di Settings › Secrets and variables › Actions.
Contoh dependabot.yml untuk proyek npm:
Memakai secret di workflow:
Nilai secret tidak pernah tampil di kode, dan GitHub menyamarkannya menjadi *** di log. Aturan mutlaknya tetap sama: jangan pernah commit kata sandi, token, atau file .env. Sekali ter-push, anggap sudah bocor.
GitHub CLI dan Gist
GitHub CLI (gh) adalah alat resmi untuk mengurus GitHub dari terminal. Pasang dari cli.github.com, lalu:
gh auth login menuntunmu login lewat browser. gh pr create membuka PR dari branch aktif, dan gh pr checkout 42 mengambil branch PR nomor 42 ke laptopmu untuk dicoba saat review.
Gist (gist.github.com) adalah tempat berbagi potongan kode atau catatan singkat. Setiap gist adalah repo Git mini dengan riwayat versi. Ada gist publik dan gist secret. Ingat, secret bukan berarti privat: siapa pun yang punya tautannya tetap bisa membuka. Dari terminal: gh gist create catatan.md (default secret, tambah --public untuk publik).
Copilot, organisasi, dan hak akses
GitHub Copilot adalah asisten AI yang memberi saran kode di editor dan menjawab pertanyaan soal kode. Ada paket gratis berkuota, dan pelajar terverifikasi lewat GitHub Education mendapat paket lebih lengkap. Sarannya tetap harus kamu baca dan uji.
Organization adalah akun bersama untuk kelompok, kelas, atau perusahaan. Anggotanya bisa dikelompokkan ke dalam team. Untuk repo organisasi, hak akses diatur per orang atau per team dengan lima tingkat:
| Peran | Bisa apa |
|---|---|
| Read | Melihat dan meng-clone, membuka issue dan berkomentar |
| Triage | Mengelola issue dan PR (label, assignee, tutup) tanpa push |
| Write | Push ke branch dan merge pull request |
| Maintain | Mengelola repo tanpa akses ke pengaturan sensitif |
| Admin | Akses penuh, termasuk pengaturan, hak akses, dan menghapus repo |
Repo milik akun pribadi lebih sederhana: hanya ada pemilik dan collaborator. Prinsipnya least privilege: beri hak seminimal yang dibutuhkan.
Kesalahan umum
- Workflow tidak jalan sama sekali. Biasanya file bukan di
.github/workflows/, ekstensinya bukan.yml/.yaml, atau indentasinya pakai tab. - Lupa
actions/checkout. Langkahnpm cigagal karena tidak adapackage.jsondi runner. - Menulis token langsung di YAML. Simpan di GitHub Secrets dan panggil lewat
${{ secrets.NAMA }}. - Mengira gist secret itu privat. Jangan taruh data rahasia di gist.
- Memberi semua teman peran Admin. Cukup Write untuk anggota tim yang ngoding.
Coba sendiri
Siapkan proyek Node kecil (butuh Node.js 20 atau lebih baru):
Buat tambah.test.js:
Jalankan npm install (membuat package-lock.json, yang dibutuhkan npm ci), lalu npm test. Di bagian akhir output kamu akan melihat ringkasan seperti:
Sekarang simpan workflow CI di atas sebagai .github/workflows/ci.yml, lalu commit dan push ke repo baru di GitHub:
Buka tab Actions di repo itu: run bernama CI akan muncul dan berubah hijau bila test lulus. Ubah a + b menjadi a - b, commit, push, dan lihat run-nya merah. Terakhir, kembalikan kodenya, buat tag v1.0.0, push tag itu, dan buat Release pertamamu.
Rangkuman
- Workflow Actions adalah file YAML di
.github/workflows/dengan kunci utamaon,jobs,runs-on, dansteps. usesmemakai action siap pakai sepertiactions/checkout@v4danactions/setup-node@v4;runmenjalankan perintah shell.- GitHub Pages menerbitkan situs statis dari branch atau lewat Actions; Releases membungkus tag dengan release notes dan file unduhan.
- Dependabot, secret scanning, branch protection, dan GitHub Secrets menjaga repo tetap aman; kredensial yang ter-push harus diganti.
ghmempercepat urusan repo dan PR dari terminal; gist secret tetap bisa dibuka siapa pun yang punya tautan.- Repo organisasi punya peran Read, Triage, Write, Maintain, dan Admin; berikan hak seminimal mungkin.
Slide 32 sampai 37 dari deck GitHub. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Kuis (4 soal)
Cek pemahaman
1File .github/workflows/ci.yml berisi workflow berikut. Kapan workflow ini dijalankan?
name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: npm ci - run: npm test2Workflow deploy butuh token API. Di mana sebaiknya token itu disimpan?
3Gist yang dibuat sebagai secret hanya bisa dibuka oleh pemiliknya sendiri.
4Di repo organisasi, peran minimal untuk mengelola label dan menutup issue tanpa bisa push kode adalah
