Sore itu, seperti biasa, saya push kode blog saya ke GitHub. Semuanya normal — GitHub Actions jalan, build successful, deployment complete. Tapi begitu saya buka blog saya…
404.
Tidak ada error di GitHub Actions. Tidak ada warning di logs. Blog просто tidak mau muncul.
Mari saya ceritakan perjalanan debugging-nya.
Langkah 1: Revert, Tapi Masalah Tetap Ada
第一步, saya cek perubahan terbaru. Apakah saya touching anything yang terkait dengan deployment? Tidak. Semua perubahan hanya soal konten.
Saya coba revert ke commit sebelumnya — biar lihat apakah masalahnya memang dari perubahan terakhir atau tidak.
Hasilnya? Tetap 404.
Saya mulai curiga ini bukan soal kode yang saya ubah.
Coba cek GitHub Actions:
gh run list --limit 10
Keliatan ada pattern:
- ✅ Deployment terbaru: “Use Hugo 0.123.0…” — Berhasil
- ❌ Percobaan sebelumnya: “Update Hugo version…” — Gagal
- ✅ Lebih awal lagi: “Revert Hugo version…” — Berhasil
Jadi masalahnya bermula dari percobaan update Hugo.
gh run view 16703525626 --log-failed
Langkah 2: Error yang Tidak Terduga
Dari log, error-nya ternyata:
ERROR render of "/" failed: partial "partials/templates/_funcs/get-page-images" not found
Wait, seriously? Saya sudah pakai theme ini berbulan-bulan dan tiba-tiba missing partial?
Saya cek submodule status:
git submodule status
Output: -dad94ab4b7c55eea0b63f7b81419d027fe9a8d81 themes/PaperMod
Tanda negatif di depan commit hash. Itu artinya submodule belum diinisialisasi. Direktori themes/PaperMod basically kosong.
Ironis.
Solusinya straightforward:
git submodule update --init --recursive
Submodule 'themes/PaperMod' registered for path 'themes/PaperMod'
Cloning into 'themes/PaperMod'...
Submodule path 'themes/PaperMod': checked out 'dad94ab4b7c55eea0b63f7b81419d027fe9a8d81'
Selesai. Tapi tunggu, ada lagi.
Langkah 3: Duplikat Submodule
Saya cek .gitmodules dan menemukan ini:
[submodule "PaperMod"]
path = PaperMod
url = https://github.com/adityatelange/hugo-PaperMod.git
[submodule "themes/PaperMod"]
path = themes/PaperMod
url = https://github.com/adityatelange/hugo-PaperMod.git
Two entries untuk submodule yang sama — tapi dengan path berbeda. Saya hapus yang PaperMod (tanpa themes/) dan сохраняю yang themes/PaperMod.
Next, kompatibilitas versi. GitHub Actions yang gagal tadi pakai Hugo 0.148.0. Tapi versi tersebut punya breaking changes yang hapus .Site.Social — sesuatu yang masih digunakan PaperMod versi lama.
Action yang saya ambil:
- Update PaperMod ke v8.0
- Kunci Hugo ke versi stabil 0.123.0
cd themes/PaperMod
git checkout v8.0
Langkah 4: GitHub Actions Berhasil, Tapi Tetap 404
Oke, semua masalah di atas sudah diperbaiki. Saya commit, push, dan GitHub Actions jalan dengan smooth:
- ✅ Install Hugo CLI
- ✅ Checkout (with submodules)
- ✅ Setup Pages
- ✅ Build with Hugo
- ✅ Upload artifact
- ✅ Deploy
Tidak ada error. Semuanya hijau.
Tapi begitu buka blog…
404 lagi.
Ini yang paling frustrating. Kode sudah benar, build sudah berhasil, tapi hasilnya 404. Where is the problem?
Saya coba cek GitHub Pages API:
gh api repos/padepokanpenguin/padepokanpenguin.github.io/pages
Response-nya reveal everything:
{
"build_type": "legacy",
"source": {
"branch": "master",
"path": "/"
}
}
Build type “Legacy”.
WHOA. Di sini masalahnya.
Walaupun saya sudah punya custom Hugo GitHub Actions workflow yang berjalan sempurna, GitHub Pages mengabaikannya sepenuhnya. Instead, dia mencoba build dengan Jekyll — sistem lama. Karena tidak ada Jekyll config di repo ini, yang muncul ya 404.
Langkah 5: Pengaturan yang Tersembunyi
Solusinya ternyata simple — tapi lokasinya tidak obvious.
Saya harus ubah GitHub Pages source dari “Deploy from a branch” ke “GitHub Actions” langsung dari repository settings.
Sekarang GitHub paham: “Oke, saya tidak akan coba build sendiri. Gunakan workflow custom yang sudah provided.”
Setelah itu, blog langsung bisa diakses normal.
Pelajaran yang Dipetik
Dari pengalaman ini, ada beberapa hal yang saya realise:
Submodule perlu di-init — Tanda
-digit submodule statusartinya submodule belum checkout. Jangan assume karena ada di repo, berarti sudah ready.Versi yang lebih baru tidak selalu lebih baik — Hugo 0.148.0 punya breaking changes. Kadang locked ke versi stabil itu pilihan yang lebih bijak.
Settings bisa override kode — Sekecil apapun repository settings bisa membuat workflow yang sudah perfect jadi tidak digunakan.
Error message tidak selalu menunjukkan letak masalah — Dari luar看起来 semua normal. Masalah sebenarnya ada di pengaturan platform, bukan di kode.
Best Practices Debugging yang Saya Terapkan
1. Cek Perubahan Terbaru Dulu
Gunakan git log dan riwayat GitHub Actions untuk lihat apa yang berubah. Biasanya jawabannya ada di situ.
2. Follow the Error Trail
Setiap error message itu petunjuk. Dari missing partial → submodule issue → versi conflict → settings problem. errors lead to next clue.
3. Verify Asumsi
Saya assume GitHub Actions workflow saya yang dijalankan. Fakta di lapangan bilang lain. Selalu verify, jangan assume.
4. Fix Satu Per Satu
Jangan coba fix semua sekaligus. Saya pisahkan: submodule dulu, then versi, then settings. Lebih mudah track apa yang solve apa.
5. Document the Journey
Menulis pengalaman ini bukan cuma buat kalian — tapi juga buat diri saya sendiri di masa depan ketika hal yang sama terjadi lagi.
Penutup
Setelah setting GitHub Pages diubah ke GitHub Actions workflow, blog finally bisa diakses lagi.
Kadang bug yang paling bikin frustrasi justru yang teach kita paling banyak. Pengalaman ini mengingatkan saya bahwa dalam development, masalah tidak selalu ada di kode yang kita tulis — kadang ada di configuration platform yang kita assume sudah benar.
Jadi, jangan malas baca dokumentasi. Jangan malas debug. Dan kalau sudah menyerah… coba cek settings-nya. 😆