Continuous Deployment Hugo dengan Github Actions
Hugo adalah static site generator untuk membangun situs web statis yang database-free. Karena Hugo berjalan tanpa koneksi basis data, maka dapat digunakanlah Github Pages sebagai hosting. Dalam meningkatkan efisiensi operasionalnya, Github Actions akan menjadi solusi continuous deployment.
Remote Repository
Anggap kita sudah memiliki sebuah project situs website Hugo bernama example dengan struktur direktori seperti di bawah. Lalu kita anggap bahwa project kita telah terintegrasi dengan remote repository di Github.
|
|
Project dalam repository lokal perlu diintegrasikan dengan remote repository di Github.Jika belum maka silahkan menjalankan perintah berikut untuk melakukan inisialisasi repository.
|
|
Kemudian silahkan login akun Github dan membuat sebuah repository baru, misalnya dengan nama example. Jika sudah, kembali ke terminal dan tambahkan remote repository baru dari Github dengan perintah berikut.
|
|
Github Pages
Kita perlu membuat remote repository lain di Github, misalnya dengan nama blog-public. Nantinya repository baru tersebut akan menampung file-file hasil generate Hugo secara otomatis dari repository example.
Kemudian masuk ke Settings pada repository tersebut, dan aktifkan Source master
pada bagian GitHub Pages
Workflows
Kembali ke terminal, buat sebuah direktori baru di project kita dengan nama .github
lalu di dalamnya buat lagi sebuah direktori bernama workflows
|
|
Jika sudah, di dalamnya kita buat sebuah file, misalnya bernama pages.yml
dan di dalam file tersebut akan kita gunakan sebagai konfigurasi runner dari Github Actions.
|
|
Generate SSH Keys
SSH Keys diperlukan untuk memberikan akses kepada Github Actions dalam memodifikasi repository external.
|
|
Nantinya akan ter-generate 2 file yaitu
- File
master
adalah private key - File
master.pub
adalah public key
Deploy Keys
Salin public keys master.pub
ke dalam clipboard dengan perintah seperti berikut
|
|
Silahkan buka halaman Settings pada repository blog-public, lalu pilih Deploy keys. Tambahkan public keys dengan nama ACTIONS_DEPLOY_KEYS.
Secrets
Salin private keys master
ke dalam clipboard dengan perintah seperti berikut
|
|
Buka halaman Settings pada repository example, lalu pilih Secrets. Tambahkan secret baru dengan nama ACTIONS_DEPLOY_KEYS, berisi private key yang baru saja kita salin.
Pengujian
Semua perubahan telah dilakukan pada direktori project Hugo example, sekarang kita akan melakukan pengujian apakah dengan melakukan push ke remote repository akan memberikan efek ke repository blog-public.
Tambahkan perubahan ke staging
Tambahkan seluruh file yang sudah ada di repository lokal menjadi berstatus staging.
|
|
Commit
Sebelum melakukan commit biasanya kita perlu melakukan konfigurasi username dan email akun Github kalian.
|
|
Lalu commit semua file yang berada di dalam mode staging dengan perinah berikut.
|
|
Push ke remote repository
Jika sudah lakukan lakukan push ke remote repository Github.
|
|
Jika berhasil, maka seharusnya proses deployment melalui Github Actions akan langsung berjalan seperti berikut.
Hasil
Berikut ini adalah hasil setelah melakukan push dan proses deployment pada Github Actions berjalan.
Terlihat bahwa Github Actions berhasil menjalankan push secara otomatis ke repository eksternal blog-public. Dan hasil build Hugo dapat kita buka pada Github Pages dengan URL berikut.
https://<username-github>.github.io/blog-public
Kesimpulan
Dengan penerapan CI/CD memakai Github Actions, proses penyuntingan dan berbagai hal operasional lain menjadi dipangkas. Tentu berkat implementasi konsep automation semua menjadi lebih efisien. Beberapa keuntungan yang kita peroleh adalah sebagai berikut.
- Tidak perlu melakukan build secara manual.
- Repository utama (example) dapat kita jadikan private repository.
- Aktivitas push hasil build Hugo dilakukan secara otomatis, tiap kali ada perubahan.