Sistema Distribuido De Integración Continua Travis CI+hexo+github = blog.github.io

En esta publicación se automatizará el proceso de publicación de un blog utilizando el framework hexo en Github pages , con la técnica de Integración Contínua y la plataforma en la nube Travis CI.

Que realmente lo que hace es descargar el código alojado en el repositorio a una máquina (linux o macOS), instala lo necesario, regenerar los archivos estáticos y los sube de nuevo al repositorio.

Para proyectos Open source es https://travis-ci.org y privados https://travis-ci.com

Configuración del repositorio

Creacion de repositorio para alojar los archivos

Dentro del repositorio es necesario crear un archivo .travis.yml, que tendrá la lista de tareas que realizará Travis CI, en la rama master se alojarán los archivos estáticos.

El script consta de dos etapas: Install y Script.

Install

* before_install:
* install

script

* before_script
* script
* after_success / after_failure
* before_deploy
* deploy
* after_deploy
* after_script

Para esta tarea se utilizará el siguiente ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
language:
node_js

node_js:
- 10.7.0

cache:
directories:
- "node_modules"

branches:
only:
- source_blog

before_install:
- npm install -g hexo

install:
npm install

before_script:
- git config --global user.name "juvenal-yescas"
- git config --global user.email "juvenal@mail.com"
- git clone --depth=1 https://github.com/iTimeTraveler/hexo-theme-hiero.git themes/hiero

script:
- hexo clean
- hexo generate

after_script:

after_success:
- mkdir .deploy # Crea una carpeta para guardar los archivos de la rama master
- cd .deploy
- git clone --depth 1 --branch master --single-branch $DEPLOY_REPO . || (git init && git remote add -t master origin $DEPLOY_REPO)
- yes | cp -rf ../public/* . # Copia y sobreescribe los nuevos archivos a la rama master
- git add -A .
- git commit -m "$(date +'%Y-%m-%d %H:%M:%S') -> $(git log --format=%h -1)"
- git branch -m master
- git push -q -u origin master # Envía el commit con los archivos actualizados

Descripción del script.

  • language: Lenguaje de programación del proyecto.

  • Linea 4: Versión del lenguaje de programación.

  • cache: Travis CI puede almacenar en caché el contenido que a menudo no cambia, para acelerar su proceso de compilación.

  • branches: Rama que estará activa en espera de cambios para realizar las tareas.

  • before_install: Antes de la instalación que comando ejecutar.

  • install: Instrucciones de instalación para el proyecto.

  • before_script: Antes de ejecutar el script, se configura git y se descarga el tema hexo para el blog.

  • script: Genera los archivos estáticos en la carpeta public

  • after_script: Si fuese necesario algún comando más.

  • after_success: Después de que todo se haya ejecutado correctamente se publican los archivos estáticos a github.


Como es en una máquina desconocida donde se estará subiendo al máster, se estaría requiriendo de la contraseña y clave de su cuenta de github, par evitar este caso, se creará un token con permisos para manipular el repositorio.

Dentro de Personal acces token Generate new token seleccionando repo y luego en Generate token

Creando token de acceso

El token generado se antepone al enlace del repositorio, porque se utiliza en Travis-ci, y es la que aparece como $DEPLOY_REPO en la línea 37, quedando de la siguiente manera para este caso:

1
2
3
token=123412341234123423461624

https://123412341234123423461624@github.com/Juvenal-Yescas/Juvenal-Yescas.github.io.git

Configuracion en Travis-ci.com

Es necesario activar la integración con github Activate

Activar integracion con github

y seleccionar el repositorio donde se estará desplegando el blog.

Seleccion del repositorio para el blog

En Settings se agrega el token de acceso al repositorio para que travis pueda publicar a la rama master el blog.

Que aparece en el ejemplo de arriba en la línea 37 $DEPLOY_REPO
Agregando token de acceso a travis

Al subir un cambio a la rama source_blog, en automático travis regera el sitio y actualiza.

Travis-ci regenerando el blog

Los nuevos cambios se pueden observar en el repositorio.

Despliegue desde Travis-ci

Mas información en Travis-ci.com

© 2020 Juvenal Yescas All Rights Reserved.
Theme by hiero