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!