Cara Deploy Hugo dari Gitlab ke Surge

13 Jan 2018 · 2 min read

Saya punya project pembuatan template untuk web company profile. Sewaktu ingin memperlihatkan demo, saya menggunakan layanan hosting Surge. Karen sangat mudah sekali.

Cukup dengan mengetik perintah:

surge ./public

Website suda di-deploy ke Surge.

Namun, tiap kali deploy, kita akan upload semua file public ke surge. Ini saya rasa kurang bagus, karena koneksi internet saya sangat terbatas (lambat dan kuota tinggal sedikit hahaha 😄).

Karena itu, saya memanfaatkan Gitlab CI:

Worflownya menjadi begini:

Developer --> Gitlab --> Surge <-- Client

Berikut ini skrip .gitlab.yml yang saya gunakan:

image: node:8-alpine

before_script:
    - npm install -g surge
    - npm install --save-dev hugo-bin@0.18.0
    - node --version
    - surge --version
    - $(npm bin)/hugo version

surge_deploy:
  only:
    - master
  script:
    - rm -rf public
    - $(npm bin)/hugo
    - surge --project ./public/ --token $SURGE_TOKEN

Karena image docker yang saya gunakan berbasis node:8-alpine. Saya menggunakan modul nodejs bernama hugo-bin, modul ini adalah wrapper dari Hugo yang bisa diinstal melalui npm. Sebenarnya bisa juga diinstal manual dari wget.

Lalu setelah itu menginstall surge dan melakukan build.

Kita membutuhkan token surge. Token ini bisa dibuat dengan perintah:

surge token

Setelah itu, kita buat dua variabel env di Secret Varable Gitlab:

  1. SURGE_LOGIN berisi alamat email yang digunakan pada surge
  2. SURGE_TOKEN berisi kode token

Udah itu aja…

Selanjutnya kita tinggal melakukan push ke branch master, maka si CI milik Gitlab akan otomatis melakukan deploy ke Surge.