Lamentablemente, GIT no dispone de un hook para dicha tarea, por lo que vamos a ver cómo crearlo de forma manual nosotros mismos.
Este script debemos crearlo en el directorio "hooks" de nuestro repositorio con el nombre
post-created-tag
El script hook sería el siguiente
#!/bin/bash CURRENT_TAGS_FILE="/home/user/git/mirepo.git/hooks/current.tags" NEW_TAGS_FILE="/home/user/git/mirepo.git/hooks/to.check.tags" TAG_MATCH_CODE=".+\.protag" rm ${NEW_TAGS_FILE} 2>/dev/null git tag > ${NEW_TAGS_FILE} CREATED_TAG=`diff ${CURRENT_TAGS_FILE} ${NEW_TAGS_FILE} | grep -E '>.+' | sed 's/> //'` if `echo ${CREATED_TAG} | grep -E "${TAG_MATCH_CODE}" 1>/dev/null 2>&1` then echo "CREATED NEW MATCHED TAG: ${CREATED_TAG}" else echo "ANY MATCHED TAG CREATED" fi git tag > ${CURRENT_TAGS_FILE} rm ${NEW_TAGS_FILE} 2>/dev/null
Veamos, pues, cómo ponemos a funcionar todo esto. Lo primero es ir al directorio de nuestro repositorio y, en el directorio hook, creamos el fichero que contendrá los tags actuales, necesario para poder comparar después sobre el commit
cd /home/user/git/mirepo.git/hooks/ git tag > current.tags
El siguiente paso será editar el fichero (o crearlo si no existe)
post-receive
con el contenido
#!/bin/bash # Este script comprueba si se han hecho cambios en un directorio concreto, # y en tal caso lanza la comprobacion del tag created sh /home/user/git/mirepo.git/hooks/post-created-tag
y, por último, damos los permisos necesarios de ejecución
chmod u+x /home/user/git/mirepo.git/hooks/post-created-tag
Como se puede observar, la implementación que hace el script cuando detecta que se ha creado un tag nuevo está abierta, por lo que será cosa vuestra.
En las primeras líneas del script podemos encontrar algunas constantes
CURRENT_TAGS_FILE="/home/user/git/mirepo.git/hooks/current.tags" NEW_TAGS_FILE="/home/user/git/mirepo.git/hooks/to.check.tags" TAG_MATCH_CODE=".+\.protag"
de las que podemos destacar la última, la cual nos indica qué match debe hacer el nuevo tag para disparar los procesos que necesitemos. Esto lo he puesto así ya que, en mi caso, el script hace un despliege en producción y no quiero que lo haga sobre cualquier tag, si no sobre el tag que contenga al final del nombre la palabra
.protag
No obstante, si queremos que se ejecute siempre que se cree un nuevo tag, tenga el nombre que tenga, bastará con poner una expresión regular como
.+
y con esto ya tenemos nuestra propia implementación del hook de creación de tag.
Cómo añadir un segundo disco para backup en Proxmox
Emanuel
Recuperar la contraseña de acceso a la Extranet de Cliente
Luis.Artola
Timestamp en Linux Bash
Hola
Crear una lista de correo en cPanel
Jair Mtz
Crear una lista de correo en cPanel
Jair Mtz
Cambiar en Linux la fecha y la hora de un fichero
Eduardo
Activar el arranque automático de las máquinas virtuales de Proxmox
Yuleidi Blanco