Gracias a GitHub Pages y un generador estático de contenido como Pelican es muy fácil montar un blog lowcost. Un humilde ejemplo es este blog, pero hasta hace poco no había conseguido una configuración que mereciera la pena compartir.
GitHub Pages
En general, el comportamiento de GitHub Pages es muy sencillo. Prácticamente consiste en crear un repositorio git
, realizar un commit con documentos HTML, y unos minutos después este contenido será accesible en una URL.
GitHub Pages ofrece dos modalidades de servicio: páginas para desarrolladores u organizaciones, y páginas para proyectos. Dependiendo de la modalidad que estemos usando varía la forma en la que se monta el sitio:
- En la modalidad para desarrolladores u organizaciones, se debe crear un repositorio llamado usuario.github.io, donde usuario es el nombre del usuario o de la organización en GitHub. La página (o páginas) HTML que se deseen servir se deben añadir directamente en la rama
master
, y no importa lo que haya en el resto de ramas. Este contenido es accesible desde la URL http://usuario.github.io. - En la modalidad para proyectos, no es necesario crear nuevos repositorios. En el repositorio del proyecto se debe crear una rama llamada
gh-pages
, y añadir ahí el contenido HTML. Este contenido será accesible desde la URL http://usuario.github.io/repository.
Aunque puede parecer un lío la gestión de estas ramas, afortunadamente existe una herramienta llamada ghp-import que facilita en gran manera estas operaciones.
Pelican
Pelican es un generador estático de contenido, al estilo de Jekyll. Por si fuera necesario, en Static Site Generators hay una recopilación de proyectos similares.
Además de la documentación del proyecto, hay multitud de páginas con instrucciones para configurar Pelican (por ejemplo aquí y aquí). Además el comando pelican-quickstart
es de ayuda para crear rápidamente una configuración básica de un blog.
Usar Pelican en GitHub Pages para desarrolladores
En mi caso, elegí utilizar GitHub Pages en su modalidad para desarrolladores. Para ello, hice lo siguiente:
-
Crear un repositorio llamado davidcaste.github.io, y clonarlo en mi ordenador:
git clone https://github.com/davidcaste/davidcaste.github.io
-
En el repositorio local, crear una rama llamada
source
, y cambiar a ella:git checkout -b source
-
Crear una configuración básica con
pelican-quickstart
y seguir las instrucciones.
Llegados a este punto, contamos con una configuración Pelican funcional. La documentación de Pelican nos explica (entre otras muchas cosas) cómo crear contenidos y generar el contenido estático a partir de ellos.
Según la configuración por defecto, las páginas generadas se almacenarán en el directorio output
. Este directorio no es necesario añadirlo al repositorio, y lo ideal es añadir las siguientes líneas al fichero .gitignore
:
output
pelican.pid
srv.pid
Como se comentó anteriormente, GitHub Pages para desarrolladores va a servir el contenido HTML que se encuentre en la rama master
del repositorio. Podríamos copiar el contenido del directorio ouput
a algún sitio, cambiar a la rama master
y añadir el contenido anteriores. Es factible, pero sin duda que es un procedimiento muy tedioso.
El script ghp-import
nos permite evitar los pasos anteriores. Con ejecutar ghp-import -b master output
él sólo va a realizar un commit en master
con los contenidos del directorio output
. Sólo nos quedaría subir los cambios de vuelta a GitHub con el comando git push origin master
.
El proceso se puede automatizar aún más modificando el fichero Makefile
que genera pelican-quickstart
; en lugar de que el objetivo github
invoque a ghp-import
sobre la rama gh-pages
, nos interesa que se invoque sobre la rama master
:
github: publish
ghp-import -b master $(OUTPUTDIR)
git push origin master
Conclusiones
La tupla GitHub Pages y un generador estático de contenido como Pelican permiten crear fácilmente páginas y blogs que requieren un esfuerzo de mantenimiento cercano a cero. Pelican en particular ofrece una serie de scripts y facilidades que automatizan las operaciones más tediosas.
En definitiva, la posibilidad de poder usar las mismas herramientas que las usadas durante el desarrollo de software, hacen de GitHub Pages junto con Pelican ofrece una alternativa muy a tener en cuenta con respecto a otras plataformas de blogs tradicionales como WordPress o Blogger.
Comments
comments powered by Disqus