Questo sito è basato su Hugo, generatore di siti statici scritto in Go. Hugo crea siti veloci e relativamente semplici da far girare. L’inghippo sta nel relativamente.

Gli assunti da cui parto sono i seguenti:

  • Hugo è stato installato. Diversamente, si faccia riferimento qui.
  • Il setup di Hugo e la configurzione del tema è stato completato e testato in locale.

Deploy su GitHub Pages

A questo punto, l’unica cosa che manca è deployare Hugo. Le possibilità sono innumerevoli (e.g Render, Netlify, AWS S3) ma l’idea è quella di concentrarsi su GitHub pages.

Diversamente da Jekyll, Hugo non è nativamente supportato da GitHub Pages. Questo ci rende necessario avere due repository:

  • Una dove salvare i file e la configurazione del sito, e.g. hugosite
  • Un’altra dove salvare i file html generati da Hugo e che andranno effettivamente a costituire il materiale per il sito, chiamata <usarname_Github>.github.io - sostituito, va da sé, con l’effettivo username di GitHub. Quest’ultima deve essere necessariamente una repository pubblica per funzionare con la versione free.

In primo luogo, sincronizziamo le repository e aggiungiamo la cartella <usarname_Github>.github.io come submodule.

git remote add origin git@github.com:<usarname_Github>/hugosite.git
git add .
git commit -m "Initial commit for our Hugo site."
git submodule add git@github.com:<usarname_Github>/<usarname_Github.github.io.git
git add .
git commit -m "Initial commit for our generated HTML."
git push -u origin master

Fatto questo, abbiamo sincronizzato la repo con i file di Hugo. Devono però essere ancora generati i file HTML che saranno la base vera e propria del sito. Prima di generarli e di pusharli nella nostra repository <usarname_Github>.github.io dev’essere ritoccata la configurazione di Hugo. Nel file config.toml dovranno essere specificati due parametri: baseurl e publishDir. Segue un esempio di configurazione con il tema Terminal

baseurl = "https://<usarname_Github>.github.io/"
languageCode = "en-us"
theme = "terminal"
paginate = 5
publishDir = "<usarname_Github>.github.io"

PublishDir in particolare dice a Hugo la cartella dove generare i file HTML che di default verrebbero generati in public. A questo punto l’unica cosa che rimane da fare è produrre i file HTML. Dalla cartella principale con i file e la configurazione del sito, è sufficiente dare il comando

Hugo

Se tutto è andato per il meglio, nella cartella <usarname_Github>.github.io dovrebbero essere magicamente comparsi i file HTML e CSS generati. Ora sarà sufficiente sincronizzare la repository dedicata:

cd <usarname_Github>.github.io
git add .
git commit -m "Commit del sito"
git push origin master

Test

Se -ancora una volta- tutto è andato per il meglio, andando su www.<usarname_Github>.github.io, dovrebbe comparire il nostro sito pari pari a come appariva in locale. Potrebbe volerci qualche minuto.

Riferimenti:

Markwell, Ivy. “Creating and Deploying Your First Hugo Site to Github Pages.” Medium, Inside the Embassy, 11 Mar. 2019, inside.getambassador.com/creating-and-deploying-your-first-hugo-site-to-github-pages-1e1f496cf88d.