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
simpletask
2 - Realizar un commit y ejecutar
git push
luego de varios links
En la notebook:
- Obtener los últimos cambios del repo
links
3 - Realizar un merge si había cambios locales
- Realizar un commit y ejecutar
git push
conlinks.txt
actualizado - Ejecutar
links2org
para obtenerlinks.org
actualizado - Revisar
links.org
y hacer commit en el repoblog
4 - Enviar cambios del repo
blog
a 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 (
links
yblog
) - 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 push
luego 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:45
agregar howto launch gitlab ci from other gitlab ci repo using trigger