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
