git build triggers teamcity

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 )