Script para programar artículos en Gitlab Pages

Ya hemos visto como montar nuestro blog en Gitlab Pages gracias a Hugo y utilizar emacs y org-mode para publicar las entradas del blog, sin embargo en Gitlab Pages no podemos programar la publicación de artículos.

En nuestro propio servidor no hay problema, basta con poner la fecha del futuro artículo para que se publique es en esa fecha pero en Gitlab Pages esto no es posible ya que el sitio se genera cada vez que realizamos un cambio en el repositorio mediante git push y se ejecute un nuevo pipeline.

Para solucionar esto he creado un pequeño script que se encarga de buscar todos aquellos artículos que tengan el valor draft = true, y compara la fecha de publicación del articulo, (valor date =) con del día en la que nos encontramos, si coinciden cambia el valor a draft = false y actualiza el repositorio de Gitlab para que vuelva a desplegar el blog.


#! /bin/bash

# PATH posts
RUTA="/mnt/datos/Docker/AppData/Nextcloud/carlos/files/Blog/content/post"
RUTA2="/mnt/datos/Docker/AppData/Nextcloud/carlos/files/Blog"
# Sacamos la fecha
HOY=$(date +%Y-%m-%d)

# Buscamos ficheros para publicar hoy
find $RUTA -name $HOY* -print | xargs sed -i "s/draft = true/draft = false/g"

# actualizamos repositorio y publicamos
cd $RUTA2
git pull
git add .
git commit -m "Publicacion articulo programado"
git push

Donde:

  • RUTA es el path donde residen los artículos del blog ya exportados a en markdown

  • RUTA2 es la raíz del blog, donde reside la carpeta .git

  • HOY variable que recupera la fecha actual del sistema

Evidentemente el script se puede mejorar, si te atreves a hacerlo por favor avísame.

Por ultimo, solo tendremos que añadirlo al cron del usuario para que se ejecute los días y las horas que necesites. En el ejemplo, ejecuta el script todos los días a las 6 A.M.


crontab -e

# publica articulos en blog
0 6 * * * /home/carlos/bin/publica.sh

Espero que te haya gustado, pasa un buen día.