git - Cómo no activar una compilación en Teamcity si solo un archivo específico ha cambiado
build triggers (1)
Estoy trabajando con Teamcity como administrador de compilación en un repositorio de git;
actualmente, el desencadenante para crear una nueva compilación es si hay nuevos cambios.
el problema es que, al compilar, el script que ejecuto crea una nueva confirmación de un archivo específico llamado version.txt (incremento el número allí).
Al finalizar con éxito, la confirmación se considera un cambio nuevo y, en la siguiente ejecución, incluso si no se realizaron otras confirmaciones, se generará la creación nocturna.
Quiero poder crear una regla que no active una compilación si el único cambio pendiente es para el archivo Version.txt.
hay alguna manera de hacer eso?
editar: he agregado una regla de condición a team city: no desencadenar una compilación si el archivo version.txt ha cambiado (ver captura de pantalla) sin embargo, parece que esta regla hará que la compilación no se active si, por ejemplo, hay 2 cambios pendientes que uno de ellos es para el archivo version.txt
gracias por adelantado.
Sí, puedes hacerlo.
Aquí hay varias opciones:
Actualice el version.txt
antes de ejecutar la compilación.
Utilice un gancho git para capturar la confirmación y luego puede actualizar la compilación y confirmarla para que tenga 2 confirmaciones, que se ejecutará la compilación: la original + la actualización de la versión
Ganchos Git
Compruebe en el enlace de confirmación para los archivos que se están comprometiendo. Si el único archivo es la versión, omita la compilación
Aquí hay un ejemplo de post-merge
que se ejecuta después del código de inserción del usuario en la rama remota
#!/bin/sh
# Check to see if this is the first commit in the repository or not
if git rev-parse --verify HEAD >/dev/null 2>&1
then
# We compare our changes against the prevoius commit
against=HEAD^
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Redirect output to screen.
exec 1>&2
# Check to see if we have updated the version.txt file
if [ $(git diff-tree -r --name-only $against | grep version.txt ) ];
then
# Output colors
red=''/033[0;31m'';
green=''/033[0;32m'';
yellow=''/033[0;33m'';
default=''/033[0;m'';
# personal touch :-)
echo "${red}"
echo " "
echo " |ZZzzz "
echo " | "
echo " | "
echo " |ZZzzz /^/ |ZZzzz "
echo " | |~~~| | "
echo " | |- -| / / "
echo " /^/ |[]+ | |^^^| "
echo " |^^^^^^^| | +[]| | | "
echo " | +[]|////////^/////////|^^^^^^^| "
echo " |+[]+ |~~~~~~~~~~~~~~~~~~| +[]| "
echo " | | [] /^/ [] |+[]+ | "
echo " | +[]+| [] || || [] | +[]+| "
echo " |[]+ | || || |[]+ | "
echo " |_______|------------------|_______| "
echo " "
echo " "
echo " ${green}You have just commited code ${red} "
echo " Your code ${yellow}is bad.!!! ${red} Do not ever commit again "
echo " "
echo "${no_color}"
#fi;
exit 0;
Use una mancha para actualizar la versión
El incremento de la versión se realizará cuando se agregue código al índice ( git add
)