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:
- GitHub Webhook: Bertugas mengirimkan sinyal ke server setiap kali ada 'push'.
- SSH Deploy Keys: Memberikan akses aman bagi VPS untuk melakukan 'git pull'.
- 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!")
})