Blog aggiornato con Hugo e GitHub Actions

Blog aggiornato con Hugo e GitHub Actions

 25 Apr 2020 -  Giulio Vian -  ~2 minuti

Tre anni fa scrivevo di come avevo migrato il contenuto del blog su Azure DevOps (da notare che aveva un nome diverso all’epoca). Oggi invece scrivo di come ho migrato il tutto su GitHub.

Ritornando sulla soluzione ho scoperto quanto Hugo   sia evoluto e quante personalizzazioni posso buttare, grazie al principio fondante “le batterie sono comprese”.

Oltre ad aver aggiornato la versione di Hugo da 0.24.1 a 0.68.3, ho migrato, o meglio riscritto, il processo automatico di pubblicazione usando GitHub Actions. Avevo due motivi per farlo: il primo è provare GitHub Actions in questo scenario e, devo dire, è andata veramente liscia. Il secondo motivo viene dagli amici di Get Latest Version   : abbiamo un progetto per i prossimi mesi che ci richiede un sito dedicato con poco o nullo impegno di gestione. Un’ottima scusa per esaminare strumenti di pubblicazione e tecnologia web.

Pubblicare un sito usando GitHub Actions

Le GitHub Actions sono molto semplici da usare, basta aggiungere un file YAML nella cartella .github/workflows del repository GitHub. Sentiti ringraziamenti a Shohei Ueda (nick name peaceiris   ) per l’ottimo lavoro nel creare delle Actions semplici ed efficaci per questo compito.

Potete vedere, infatti, che l’intero script è lungo meno di 20 righe. Più oltre commenterò alcuni punti interessanti.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
on:
  push:
    branches:
      - master
jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: '0.68.3'
          extended: true
      - name: Build
        run: hugo --minify --gc --destination ./public
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          deploy_key: ${{ secrets.PUBLISH_GIULIOV_GITHUB_IO }}
          external_repository: giuliov/giuliov.github.io
          publish_branch: master
          publish_dir: ./public

Le cose da osservare sono evidenziate nel listato. La riga 11 (submodules: true) garantisce che venga scaricato anche il tema del sito, in caso contrario, apparirebbe senza formattazione. Le righe 15 e 16 la versione di Hugo che vogliamo. La mia raccomandazione è di essere sempre espliciti per evitare sorprese: nuove versioni, e di Hugo e del tema, si susseguono velocemente e talvolta cambiano il comportamento e bisogna adeguare il codice esistente.

Per pubblicare il sito generato da Hugo (righe da 19 a 25), ho scelto di usare un diverso repository GitHub. Benché sia più complicato di altre tecniche – ad esempio, usare il branch gh-pages dal medesimo repository – mi permette di avere un maggior controllo in previsione di cambiamenti futuri.

Per oggi è tutto e a risentirci presto.

comments powered by Disqus