howto launch gitlab ci from other gitlab ci repo using trigger

index | about | archive | charlas | docs | links

dot | git | img | plt | tty | uml

2023-02-06-osiux-links-trigger-osiux-blog.png

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:

image: iquiw/alpine-emacs

before_script:
  - apk update && apk add bash gawk moreutils make curl
  - awk --version
  - emacs --version

pages:
  script:
  - make requirements
  - make links
  - make org2html
  - make public2tgz
  artifacts:
    paths:
    - public
  only:
  - develop

update_blog:
  trigger:
    project: osiux/osiux.gitlab.io
    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

  • 2023-02-14 20:45 agregar howto launch gitlab ci from other gitlab ci repo using trigger

Notas al pie de página: