find value in all git tags using =git-find-value=

· osiux's blog


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

deploy fallido #

Hoy falló un deploy, de esos que hay que hacer por las noches y que obvio, al fallar hay que ver de corregirlo o deshacer todo aunque en este caso no basta con presionar CTRL-Z, es un poquito más complejo!

te juro que es la primera vez que me pasa #

Cuando miro los logs buscando el error, detecto algo que nunca antes sucedió en las pruebas de este release, rarísimo, al investigar un poco más doy con el error, por algún motivo el jobtemplate de [AWX]{.underline} clonó la versión v0.4.0 de un repo en lugar de la 0.7.2 WTF!

no sos vos, soy yo #

Yo recordaba que la variable global para el entorno productivo estaba definida como master y NO podía fallar, debía clonar la última versión estable, pero realizando un diff veo que la variable freeipa_sssd_tools_git_version no estaba definida en PRD y sin embargo si estaba globalmente con el valor v0.4.0

Pero si la última vez, deployamos master (en ese momento v0.6.1), entonces qué sucedió?

git-find-value al rescate! #

Recordé que hace un tiempo hice el script git-find-value que permite buscar un valor en un archivo de un repo git y mostrar qué valor tenía en cada tag, en este caso fue claro, no hubo duda alguna, globalmente en el inventario nunca estuvo definido como master :(


# git-find-value freeipa_sssd_tools_git_version group_vars/all.yml

v0.7.1 freeipa_sssd_tools_git_version: v0.3.0
v0.7.2 freeipa_sssd_tools_git_version: v0.3.0
v0.7.3 freeipa_sssd_tools_git_version: v0.3.0
v0.7.4 freeipa_sssd_tools_git_version: v0.4.0
v0.7.5 freeipa_sssd_tools_git_version: v0.4.0
v0.7.6 freeipa_sssd_tools_git_version: v0.4.0
v0.7.7 freeipa_sssd_tools_git_version: v0.4.0

Y en PRD si estuvo como master, pero en los tags v0.7.6 y v0.7.7, y justamente hoy estaba estrenando tag v0.7.8


# git-find-value freeipa_sssd_tools_git_version group_vars/prd.yml

v0.7.6 freeipa_sssd_tools_git_version: master
v0.7.7 freeipa_sssd_tools_git_version: master

Un simple git diff entre 2 tags y pude ver dónde perdí algunas variables, las pasé por alto, porque el enfoque estaba en otro cambio más trascendental.

Utilidades siempre a mano #

Gracias a comandos como git-find-value 1 puedo rápidamente resolver conflictos sin perder tiempo en la web, buscando como resolver algo puntual que es poco frecuente y que seguro olvidaré rápidamente, éste y otros scripts de git están disponibles en git-bash-utils 2

Deploy ExitOSi #

Para resolver éste error y otros menores, tuve que generar varios releases de varios repos y esto lo pude resolver rápidamente gracias a otros scripts de Ansible Tools 3 y GitLab Bash Utils 4 para obtener finalmente un deploy como estaba planeado, sin errores y garantizando que todos los cambios estén versionados!

Posts relacionados... #

ChangeLog #