Hugo y Github Pages. Automatizar la subida

Hugo está genial para crear un blog y Github Pages es sublime para albergarlo. El problema es que tienes que renderizar en local la web con Hugo en local y luego subir el directorio Public a Github Pages. Si no estás con tú ordenador, es un problema.

Pero gracias a las Github Actions podemos automatizar todo esto… Vamos a ver cómo:

  1. Creamos repositorio de Github Pages: https://github.com/<usuario>/<usuario>.github.io

  2. Creamos repositorio de Hugo: https://github.com/<usuario>/mihugo

  3. Creamos un token en nuestra cuenta: https://github.com/settings/tokens/new y copiamos el código que nos da.

  4. Vamos a ambos repositorios anteriores, a la sección Secrets: https://github.com/<usuario>/<usuario>.github.io/settings/secrets y https://github.com/<usuario>/mihugo/settings/secrets y añadimos un nuevo secret, llamándolo hugosecret y pegando el código que nos dió el punto 3.

  5. En el repositorio del punto 2, https://github.com/<usuario>/mihugo creamos los directorios y el fichero: .github/workflows/main.yml, poniendo este contenido:

name: renderizar hugo

on:
  push:
    branches:
    - master

jobs:
  build-deploy:
  
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v1

    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2
      with:
        hugo-version: '0.62.0'

    - name: Build
      run: hugo --minify

    - name: Deploy
      uses: peaceiris/actions-gh-pages@v2
      env:
        PERSONAL_TOKEN: ${{ secrets.hugo }}
        EXTERNAL_REPOSITORY: <usuario>/<usuario>.github.io
        PUBLISH_BRANCH: master
        PUBLISH_DIR: ./public/

Ya está, cada vez que hagas un commit al repositorio del punto 2, automáticamente ejecutará hugo y hará un commit del directorio Public en el repositorio del punto 1, desplegando un nuevo post en tu blog que tendrá la dirección https://<usuario>.github.io/ :)