Hugo + Git + GitLab Pages & CI/CD = ❤️

In questo articolo vediamo come utilizzare la combinazione di Hugo, Git, GitLab Pages, GitLab CI/CD per la gestione di un sito web personale.
Hugo è un generatore di siti statici, veloce e moderno scritto in Go.
Git è uno degli strumenti di controllo versione più utilizzati.
Con GitLab Pages è possibile pubblicare siti web statici direttamente da un repository GitLab.
GitLab CI/CD è uno strumento di GitLab che permette di eseguire una pipeline a seguito di cambiamenti nel repository.
Installazione di Hugo
A questo link è possibile trovare l’ultima versione precompilata di Hugo per i sistemi Windows. È consigliabile scaricare la versione extended, necessaria per alcuni temi. Una volta scaricato lo zip, decomprimerlo e copiare l’eseguibile Hugo.exe
in un percorso a scelta, ad esempio C:\Users\crist\AppData\Local\hugo
. Il percorso scelto va aggiunto nella variabile di ambiente Path
, come indicato di seguito:
Da prompt dei comandi, verifichiamo che l’installazione sia riuscita correttamente:
|
|
L’output sarà simile al seguente:
|
|
Creazione del nuovo sito
Inizializzazione
Una volta installato Hugo, possiamo passare a creare il nostro nuovo sito. Da un prompt dei comandi, eseguiamo:
|
|
Il comando appena eseguito crea un sito Hugo in una cartella di nome quickstart
:
Scelta del tema
A questo link è possibile trovare tantissimi temi per Hugo.
Una volta scelto il tema, è necessario seguire le indicazioni presenti nella documentazione dello stesso per l’installazione e la configurazione. Nel nostro caso, useremo il tema LoveIt. Procediamo quindi con l’installazione del tema eseguendo i comandi:
|
|
Così facendo abbiamo inizializzato il nostro repository Git e aggiunto nella cartella themes
il tema LoveIt.
Procediamo ora ad editare il file di configurazione del sito config.toml
. Di seguito una configurazione di base:
|
|
Per la descrizione dei parametri di configurazione consultare la documentazione dello specifico tema.
Aggiunta di un post
Per creare un nuovo post basta usare il comando:
|
|
A questo punto viene creato un nuovo file first_post.md
nella cartella content/posts
:

È possibile ora editare il titolo e il contenuto del file usando la sintassi markdown. Se non la si conosce, è consigliabile consultare questo link.
Preview del sito
Lanciare il comando:
|
|
Il comando appena lanciato produrrà un output simile al seguente:
|
|
Navighiamo ora all’indirizzo http://localhost:1313 per visualizzare l’anteprima del nostro nuovo sito.
Salvataggio su Git
In uno degli step precedenti, abbiamo inizializzato il nostro repository Git.
Aggiungiamo ora il file .gitignore
al nostro progetto per indicare a git quali cartelle e files ignorare. Il contenuto da utilizzare è il seguente:
|
|
Non ci resta quindi che salvare le modifiche fin qui fatte con i comandi:
|
|
A questo punto è possibile pushare le modifiche in un repository remoto (GitLab, GitHub, ecc). Si rimanda alla documentazione dello specifico sito per la creazione del repository remoto e il push dei contenuti.
Per questo tutorial si è scelto di utilizzare GitLab, per sfruttare la funzionalità “GitLab Pages”. Dopo aver creato il repository su gitlab.com, si possono usare i seguenti comandi per eseguire il push:
|
|
dove username
è l’username registrato su GitLab e projectpath
è il nome del progetto creato.
GitLab Pages & CI/CD
GitLab esegue il deploy del sito da una cartella specifica di nome public
.
Per maggiori informazioni su GitLab Pages, si consiglia di leggere la documentazione disponibile al seguente link.
Per eseguire il deploy è possibile usare il tool integrato GitLab CI/CD. Le istruzioni da eseguire vanno inserite in uno specifico file nella root del progetto dal nome .gitlab-ci.yml
.
Per Hugo va bene il seguente contenuto:
|
|
Salviamo le modifiche appena eseguite:
|
|
Se non ci sono errori, il push appena eseguito scatena la compilazione e il deploy del sito, come indicato nel file di configurazione .gitlab-ci.yml
appena caricato:

Per conoscere l’indirizzo dove il nostro sito web è ospitato, basta andare in Settings > Pages dalla schermata principale del progetto GitLab:

Conclusioni
I vantaggi di questo approccio sono tanti. Vediamone alcuni:
- Tutta la storia delle modifiche è salvata sotto git; è quindi possibile tornare indietro ad una specifica versione in qualsiasi momento.
- Con GitLab CI/CD abbiamo automatizzato il deploy del sito, evitando quindi di dover procedere manualmente.
- Hugo genera un sito statico che presenta tutta una serie di benefici rispetto ad un classico CMS, quale Wordpress ad esempio. Lo score che si ottiene su PageSpeed è un esempio di ciò:
- 91 su Dispositivi Mobili
- 99 su Desktop