Kembali ke Blog

Mengapa Otomatisasi?

Sebagai seorang Fullstack Engineer, efisiensi adalah segalanya. Saya ingin setiap kali saya selesai menulis artikel di Markdown, artikel tersebut langsung muncul di website tanpa saya harus melakukan build ulang biner Go atau SSH manual ke VPS.

Arsitektur yang Saya Gunakan

Sistem ini melibatkan tiga komponen utama:

  1. GitHub Webhook: Bertugas mengirimkan sinyal ke server setiap kali ada 'push'.
  2. SSH Deploy Keys: Memberikan akses aman bagi VPS untuk melakukan 'git pull'.
  3. Go Exec Command: Menjalankan perintah Git langsung dari dalam aplikasi Fiber.

Cuplikan Kode

Berikut adalah logika sederhana yang menangani Webhook di backend Go:

app.Post("/content-update", func(c *fiber.Ctx) error {
    // Jalankan git pull di background
    cmd := exec.Command("git", "pull", "origin", "main")
    if err := cmd.Run(); err != nil {
        return c.Status(500).SendString("Gagal sinkronisasi konten")
    }

    // Refresh cache blog
    blog.LoadPosts()

    return c.SendString("Konten berhasil diperbarui!")
})