Bash Script para publicar un post en mi blog automáticamente

1 minute read

Bash script desarrollado para automatizar el despliegue de mi blog desarrollado en jekyll ante cualquier cambio que se produzca.

En primer lugar hay que recordar que para mi blog uso Jekyll, es una herramienta que permite transformar texto plano en web estáticas y blogs. Para mi es muy sencillo, no se necesita ninguna base de datos, moderación de comentarios entre otros. Si queréis conocer un poco más ir a su web que está muy bien explicado como iniciarte.

Lo que es relevante para nosotros, es que el código estático del blog se genera en una carpeta con el nombre _site. Esta carpeta contiene todos los elementos necesarios (assets, css, js, images, html, ... etc).

Objetivo: Desplegar esta carpeta en el servidor donde se aloja el blog.

Tareas:

  • Realizar un backup del contenido actual
  • Comprimir la carpeta _site
  • Enviar / Copiar dicha carpeta al servdidor
  • Sustituir el contenido

Se ha desarrollado el siguiente script en bash que nos permite realizar todas las tareas. Está alojado en mi GitHub.

#!/bin/bash

# Run a backup
ssh username@domain.com './backup.sh'

#Compress the folder and copy it to the server
tar -cvzf site.tgz _site
scp site.tgz username@domain.com:/home/username

#Deploy new version
ssh -t username@domain.com bash -c "'
sudo mv site.tgz /var/www/
cd /var/www/
sudo tar -xvzf /var/www/site.tgz
sudo rm site.tgz
sudo chown -R root:root _site
sudo chmod 0744 _site
sudo cp -Rf _site/* html/
'"

Notas: (Preparación para este ejemplo)

  • backup.sh es un script que simplemente realiza una copia y compresion del contenido renombrandolo con la fecha actual.
  • el blog está alojado en la ruta /var/www/html
  • el usuario que lo ejecuta es root

Saludos.

Updated: