Hugo – Build Automatico tramite GitHub Actions

Hugo (The world’s fastest framework for building websites) nell’ultima settimana e’ stato molto presente nella mia curiosità da programmatore ed approfittando del lungo week end pasquale ho approfittato per studiarlo e renderlo produttivo su alcuni siti. Come primo step ho rifatto il sito mono pagina “Andrea Carratta | DEV” per capirne l’utilizzo ed alcuni sistemi. La parte più interessante di questa fase sperimentale e’ stata la pubblicazione del sito tramite GitHub Actions.
Per effettuare il publish del sito realizzato con Hugo ho sfruttato le pipeline su GitHub Actions ed in questo modo appena verrà effettuata una Pull Request (o genericamente commit) su master le nuove modifiche verranno rilasciate sul web tramite pubblicazione via FTP.
Prerequisito: Per utilizzare la seguente pipeline dovrete inserire nei vostri secret (Repository > Setting > Secret) le seguenti chiavi
FTP_SERVER : assegnare l’indirizzo del proprio FTP
FTP_USERNAME: assegnare il nome utente del proprio FTP
FTP_PASSWORD : assegnare la password del proprio FTP
LOCAL_DIR: assegnare la cartella locale del proprio sito da pubblicare (ex ./public/ )
REMOTE_DIR: assegnare la cartella sul server (path) dove dovranno essere copiati i file
GitHub Actions - Build Automatico
Ecco la pipeline che vi permetterà di realizzare la pubblicazione automaticamente. Il path in cui si troverà il file e’ il seguente
.github/workflows/main.yml
Con le dovute precauzioni e attenzione copiate all’interno il seguente YML e buona pubblicazione!
name: Publish
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: true # Fetch Hugo themes
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.68.3'
# extended: true
- name: Build
run: hugo -c public
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
- name: Deploy
uses: SamKirkland/FTP-Deploy-Action@2.0.0
env:
FTP_SERVER: ${{ secrets.FTP_SERVER }}
FTP_USERNAME: ${{ secrets.FTP_USERNAME }}
FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }}
LOCAL_DIR: ${{ secrets.LOCAL_DIR }}
REMOTE_DIR: ${{ secrets.REMOTE_DIR }}
ARGS: --delete
Ora non vi resta che godervi le pubblicazioni automatiche direttamente dal divano di casa (anche perché non abbiamo molte alternative in questo momento)
Nota Finale
Vorrei chiudere l’articolo copiando il post scritto sul mio profilo Linkedin l’altro pomeriggio quando ho terminato l’esperimento.
Lo ammetto, mi emoziono come un bambino. Sino a venerdì ignoravo l’esistenza di #gohugo ed ora ho appena effettuato da #github una action per il publish di un mio sito.
Push su master
Setup Hugo
Build
Deploy (nuovo branch)
E per chiudere in bellezza
- Deploy via FTP utilizzando i secrets offerti dalla piattaforma
… sono felice! In un colpo solo ho chiuso una #GitHubActions e la pubblicazione di un sito basato su Hugo.
Questa sera mi toccherà andare in pizzeria a festeggiare. Ah no, non si può ancora e questo non mi piace!