Tidak ada yang lebih memuaskan daripada prinsip “set it and forget it” (atur dan lupakan). Jika Anda menggunakan Hugo, Anda mungkin menyadari satu kendala kecil: meskipun Anda sudah mengatur date di masa depan pada front matter postingan, situs Anda tidak akan otomatis terupdate kecuali ada proses build baru yang dipicu pada hari tersebut.
Dalam panduan ini, saya akan menunjukkan cara mengotomatiskan proses build Hugo menggunakan GitHub Actions. Baik Anda menggunakan Cloudflare Pages atau GitHub Pages, Anda dapat memastikan konten yang dijadwalkan tayang tepat pada waktunya.
Strategi: Mengapa Situs Statis Butuh “Pancingan”? #
Karena Hugo adalah static site generator, file HTML hanya dibuat pada saat proses build. Untuk mempublikasikan postingan yang sudah dijadwalkan, kita membutuhkan mekanisme untuk memicu proses build baru secara berkala. Kita akan menggunakan Cron Job melalui GitHub Actions untuk menangani hal ini.
Opsi 1: Otomatisasi di Cloudflare Pages #
Cloudflare Pages menggunakan Deploy Hooks, yaitu URL unik yang akan memicu proses build setiap kali menerima permintaan HTTP POST.
1. Buat Deploy Hook #
- Login ke Cloudflare dashboard.
- Buka menu Workers & Pages > Pilih proyek Hugo Anda.
- Buka tab Settings > Builds & Deployments.
- Gulir ke bawah hingga bagian Deploy hooks dan klik Add build hook.
- Beri nama (misal:
Scheduled_Build) dan pilih branch utama Anda (main). - Salin URL yang dihasilkan.
2. Simpan Hook sebagai Secret #
- Di repositori GitHub Anda, buka Settings > Secrets and variables > Actions.
- Klik New repository secret.
- Nama:
CLOUDFLARE_BUILD_HOOK. - Value: Tempel (paste) URL dari Cloudflare tadi.
3. Buat GitHub Action #
Buat file di lokasi .github/workflows/schedule-build.yml:
name: Scheduled Cloudflare Rebuild
on:
schedule:
- cron: '0 9 * * *' # Berjalan setiap hari jam 09:00 UTC (16:00 WIB)
workflow_dispatch: # Memungkinkan pemicu manual
jobs:
rebuild:
runs-on: ubuntu-latest
steps:
- name: Trigger Cloudflare Pages Build
run: |
curl -X POST ${{ secrets.CLOUDFLARE_BUILD_HOOK }}Opsi 2: Otomatisasi di GitHub Pages #
Jika Anda menghosting situs langsung di GitHub Pages, Anda tidak butuh Deploy Hook. Anda cukup mengatur alur kerja (workflow) yang sudah ada agar berjalan sesuai jadwal.
Perbarui Workflow Anda #
Cari file YAML deployment Hugo Anda (biasanya di .github/workflows/hugo.yml) dan perbarui bagian on::
name: Deploy Hugo site to Pages
on:
push:
branches: ["main"]
schedule:
- cron: '0 9 * * *' # Menambahkan build harian setiap jam 09:00 UTC
workflow_dispatch:
# ... sisa langkah deployment hugo Anda yang sudah adaKonfigurasi Penting pada Hugo #
Terlepas dari platform hosting yang Anda gunakan, Anda harus memastikan Hugo dikonfigurasi agar bisa “melihat” postingan masa depan saat proses build.
1. Flag --buildFuture
#
Secara default, Hugo mengabaikan postingan dengan tanggal di masa mendatang. Anda harus menambahkan flag --buildFuture pada perintah build.
-
Cloudflare: Perbarui Build command di Settings menjadi
hugo --gc --minify --buildFuture. -
GitHub Actions: Pastikan bagian perintah run Anda terlihat seperti:
hugo --minify --buildFuture.
2. Samakan Versi Environment #
Untuk menghindari masalah perbedaan performa antara lokal dan server, pastikan variabel lingkungan HUGO_VERSION di dashboard hosting Anda sesuai dengan versi yang Anda gunakan di komputer lokal.
Ringkasan Perbandingan #
| Fitur | Cloudflare Pages | GitHub Pages |
|---|---|---|
| Metode Pemicu | HTTP POST (Deploy Hook) | Native GitHub Action |
| Tingkat Kesulitan | Rendah (Butuh 1 Secret) | Sangat Rendah (Edit 2 baris) |
| Batas Build (Free) | 500 build/bulan | 2.000 menit/bulan |
Kesimpulan #
Mengotomatiskan alur kerja memungkinkan Anda untuk menulis konten secara massal (batching) dan menjaga jadwal postingan tetap konsisten tanpa campur tangan manual. Melakukan “pancingan” sekali sehari biasanya sudah cukup bagi kebanyakan blogger dan masih dalam batas penggunaan gratis di kedua platform tersebut.