howto launch gitlab ci from other gitlab ci repo using trigger

· osiux's blog

#+LINK_HOME:   index.html
#+INCLUDE:     header.org

Hace tiempo que decidí compartir mis links 1 favoritos y para esto la secuencia era la siguiente:

En el teléfono espía:

  1. Registrar y categorizar link en simpletask 2
  2. Realizar un commit y ejecutar git push luego de varios links

En la notebook:

  1. Obtener los últimos cambios del repo links 3
  2. Realizar un merge si había cambios locales
  3. Realizar un commit y ejecutar git push con links.txt actualizado
  4. Ejecutar links2org para obtener links.org actualizado
  5. Revisar links.org y hacer commit en el repo blog 4
  6. Enviar cambios del repo blog a GitLab
  7. Verificar que la CI publique el sitio en https://osiux.gitlab.io/
  8. Verificar que https://osiux.com/ obtenga los cambios de GitLab

Y esta secuencia tenía varios inconvenientes:

# automate all the things

Luego de pensar un poco, cómo podía simplificar la operatoria y al mismo tiempo automatizar el circuito, logré resolverlo eficientemente de la siguiente manera:

En el teléfono espía:

  1. Registrar y categorizar link en simpletask
  2. Realizar un commit y ejecutar git push luego de varios links

En la notebook:

  1. No tengo que hacer nada de nada!

En GitLab:

  1. Se obtienen los últimos cambios y se dispara la CI
  2. Verificar que la CI publique el sitio en https://osiux.gitlab.io/osiux-links/
  3. Verificar que https//osiux.com/ obtenga los cambios de GitLab

El cambio es enorme! Ahora puedo publicar directamente desde el teléfono espía, basta con ejecutar git push y GitLab hace su magia! :)

Y luego de varias pruebas, ya no son necesarias las vericaciones, en general siempre funciona como se espera!

# dónde esta la magia?

La magia esta en .gitlab-ci.yml del repo osiux-links, este repo además de almacenar el listado de links en el archivo links.txt, contiene un Makefile 5 con reglas que permiten instalar todas las depdencias necesarias para procesar links.txt y convertirlo a links.org para luego generar links.html

El contenido de .gitlab-ci.yml es el siguiente:

 1image: iquiw/alpine-emacs
 2
 3before_script:
 4  - apk update && apk add bash gawk moreutils make curl
 5  - awk --version
 6  - emacs --version
 7
 8pages:
 9  script:
10  - make requirements
11  - make links
12  - make org2html
13  - make public2tgz
14  artifacts:
15    paths:
16    - public
17  only:
18  - develop
19
20update_blog:
21  trigger:
22    project: osiux/osiux.gitlab.io
23    branch: master

Ahora el archivo links.org se genera dinámicamente en GitLab, ya lo eliminé del repo blog y puedo actualizar y compartir links desde el teléfono espía y despreocuparme de la publicación automatizada!

# Te sugiero leer

# ChangeLog