Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=8d5e2d59-8096-417c-b0ce-3f15997c356b

Crea tu propia página o blog gratis con Jekyll y Github: Parte 4 - Compilación en la nube y gestión de plugins

Ya conoces el proceso de construcción de un sitio estático utilizando el generador Jekyll de principio a fin. Además, Jekyll soporta el uso de plugins adicionales para generar algunos tipos de páginas automáticamente o modificar el comportamiento de distintas formas. Sin embargo, el uso de plugins está restringido en GitHub Pages por motivos de seguridad. Para aprovechar todas las posibilidades que nos ofrece el generador estático, vamos a aprender cómo automatizar el propio proceso de generación para GitHub Pages mediante un sistema de integración continua como Travis CI, y a extender la funcionalidad del sitio con distintos plugins.

Extendiendo con plugins

El sistema de plugins de Jekyll te permite ejecutar código adicional que construya contenido personalizado para tu sitio. Si lo compilas fuera de GitHub Pages generalmente podrás utilizarlos, ya que el modo "seguro" de Jekyll está desactivado por defecto.

Los plugins se pueden añadir de varias formas: bien incluyendo el código en la carpeta _plugins, o bien indicándolo como dependencia en el Gemfile o el archivo _config.yml. La forma más sencilla es añadirlo mediante el siguiente comando, sustituyendo jekyll-gist por el plugin deseado:

bundle add --group=jekyll_plugins jekyll-gist

La mayoría de plugins interesantes consisten en generadores, es decir, programas que añaden páginas a tu sitio automáticamente. Pueden servir para crear archivos por categorías y etiquetas, generar páginas especiales como sitemap.xml, y páginas de contenido a partir de otras fuentes de datos. También existen extensiones para el marcado Liquid con nuevos filtros y etiquetas.

En nuestro ejemplo, vamos a incluir un plugin que genera páginas de archivo para cada categoría. Para ello, ejecutamos la orden siguiente:

bundle add --group=jekyll_plugins jekyll-category-pages

Ahora, añadimos una estructura para las páginas de tipo archivo en la ruta _layouts/category_index.html:

---
layout: default
---

<h3>
  {{ page.total_posts }}
  post{% if page.total_posts != 1 %}s{% endif %}
  en la categoría {{ page.title }}
</h3>

<ul>
  {% for post in page.posts %}
  <li><a href="{{ post.url | relative_url }}">{{ post.title }}</a></li>
  {% endfor %}
</ul>

Ahora, podremos especificar una o varias categorías en la variable categories de los datos iniciales de cada post. Cuando lancemos Jekyll para servir nuestro sitio, podremos acceder a la ruta /category/nombre_categoria para cada una de ellas:

Este es sólo un ejemplo, puedes consultar la lista de plugins útiles disponibles que te pueden ayudar a refinar y organizar mejor el contenido de tu sitio.

Compilación en la nube

Los servicios de integración continua permiten la automatización de builds y tests a lo largo del período de desarrollo de un proyecto. Uno de los más conocidos es Travis CI, que además cuenta con integraciones útiles en GitHub.

Nuestro objetivo con la integración continua es que, al subir cambios en nuestro sitio web, se lance un proceso de generación automático que termine publicando el sitio en GitHub Pages.

Para ello, necesitaremos dividir el repositorio de trabajo en dos ramas, una de ellas contendrá el código del sitio sin generar y la otra el listo para publicar. Para crear la nueva rama, puedes usar el comando git checkout -b <nombre_rama> o bien hacerlo desde GitHub como se observa en la siguiente figura:

Nota: si tu sitio web está almacenado en un repositorio de tipo usuario.github.io entonces la rama de publicación será master y la de trabajo una aparte, por ejemplo dev o site. Si es un repositorio normal, que es el caso que trabajaremos en esta guía, entonces la rama de publicación se llamará gh-pages y la de trabajo puede ser master o cualquier otra.

Ahora, inicia sesión en Travis CI y activa el repositorio en el que quieras publicar tu sitio, como el repositorio example de la figura:

 

Para configurar Travis CI, simplemente añade un archivo .travis.yml con una configuración como la siguiente:

language: ruby

rvm:
 - 2.5

before_install: |
    gem install bundler
    git config --global user.email "[email protected]"
    git config --global user.name "David (Bot)"
    [ "${TRAVIS_PULL_REQUEST}" = "false" ] && \
    git clone -b gh-pages https://${MY_TOKEN}@github.com/cmvp-jekyll/example.git .site

script: |
    bundle exec jekyll build -d .site
    touch .site/.nojekyll

after_success: |
    cd .site/
    [ "${TRAVIS_PULL_REQUEST}" = "false" ] && \
    git add * && \
    git add . --all && \
    git commit -m "Actualización: `date`" && \
    git push origin gh-pages --quiet

Esto indica a Travis CI que debe utilizar una máquina con Ruby, instalar las dependencias del sitio y clonar la rama de publicación en el directorio .site, donde indicaremos a Jekyll que genere el sitio. Después, compondrá un commit con los cambios y los subirá a dicha rama.

La variable MY_TOKEN que aparece en la configuración debes establecerla en los ajustes de Travis CI para tu repositorio (sección Environment Variables), consiguiendo un token de acceso personal desde GitHub con acceso a tus repositorios. En las siguientes figuras muestro cómo crear tu nuevo token y añadirlo a la configuración de Travis:

Una vez que subas el archivo de configuración a GitHub, Travis CI debería arrancar un build para compilar el código de tu sitio web, y posteriormente subirlo a la rama de publicación:

Nota: Puesto que ahora compilas tu sitio en un servidor externo a GitHub, comprueba que las variables url y baseurl del archivo de configuración _config.yml contienen los valores correctos para ser servidos en GitHub.

Descárgate el ejemplo de este artículo desde aquí.

En la próxima entrega, la semana que viene, haremos un resumen práctico de todo lo que hemos visto hasta ahora, basándonos en un vídeo explicativo que muestre todo el proceso de creación de un sitio y su despliegue y publicación automáticos en Github.

Crea tu propia página o blog gratis con Jekyll y Github - Serie completa:

David Charte David Charte es un ingeniero informático y matemático apasionado por la divulgación del conocimiento. Cuando no está tratando de aprender un nuevo lenguaje, investiga en el campo de la ciencia de datos. Puedes seguirlo en Twitter en @fdavidcl. Ver todos los posts de David Charte
Archivado en: Desarrollo Web

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.