Lewati ke konten utama
  1. Posts/

Cara Otomatisasi Jadwal Postingan di Hugo: Cloudflare Pages & GitHub Pages

·566 kata·3 menit
Noor Khafidzin
Penulis
Noor Khafidzin
Daftar isi

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
#

  1. Login ke Cloudflare dashboard.
  2. Buka menu Workers & Pages > Pilih proyek Hugo Anda.
  3. Buka tab Settings > Builds & Deployments.
  4. Gulir ke bawah hingga bagian Deploy hooks dan klik Add build hook.
  5. Beri nama (misal: Scheduled_Build) dan pilih branch utama Anda (main).
  6. Salin URL yang dihasilkan.

2. Simpan Hook sebagai Secret
#

  1. Di repositori GitHub Anda, buka Settings > Secrets and variables > Actions.
  2. Klik New repository secret.
  3. Nama: CLOUDFLARE_BUILD_HOOK.
  4. 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 ada

Konfigurasi 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.


Terkait


Load Comments