howto launch gitlab ci from other gitlab ci repo using trigger
index | about | archive | charlas | docs | links
dot |
git |
img |
plt |
tty |
uml
Hace tiempo que decidí compartir mis links 1 favoritos y para esto la secuencia era la siguiente:
En el teléfono espía:
- Registrar y categorizar link en 
simpletask2 - Realizar un commit y ejecutar 
git pushluego de varios links 
En la notebook:
- Obtener los últimos cambios del repo 
links3 - Realizar un merge si había cambios locales
 - Realizar un commit y ejecutar 
git pushconlinks.txtactualizado - Ejecutar 
links2orgpara obtenerlinks.orgactualizado - Revisar 
links.orgy hacer commit en el repoblog4 - Enviar cambios del repo 
bloga GitLab - Verificar que la CI publique el sitio en https://osiux.gitlab.io/
 - Verificar que https://osiux.com/ obtenga los cambios de GitLab
 
Y esta secuencia tenía varios inconvenientes:
- depender de la notebook para publicar
 - realizar commits en 2 repos diferentes (
linksyblog) - circuito de pasos manuales con muchos tiempos muertos
 - muy baja frecuencia de publicación
 
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:
- Registrar y categorizar link en 
simpletask - Realizar un commit y ejecutar 
git pushluego de varios links 
En la notebook:
- No tengo que hacer nada de nada!
 
En GitLab:
- Se obtienen los últimos cambios y se dispara la CI
 - Verificar que la CI publique el sitio en https://osiux.gitlab.io/osiux-links/
 - 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:45agregar howto launch gitlab ci from other gitlab ci repo using trigger
