I am trying to setup a build trigger for TeamCity using Mercurial as the VCS. Right now the trigger looks like:
+:/**
This trigger get fired when changesets are committed. However, I have TeamCity setup to tag each build in the VCS. The tagging process is firing the above build trigger so the build gets caught in a loop.
Can anyone suggest a VCS build trigger that will filter out the tagging process?
Adding the trigger pattern:
-:/.hgtags
filters out the .hgtags file from the build trigger. This is the file that gets modified when the source is tagged by TeamCity. When this file is excluded tagging operations will not fire the build trigger.
Teamcity and the syntax above are foreign to me, but if you've got scripting capabilities you can check if a changeset is a tag-only changeset by doing something like this:
if [ "$(hg log -r tip --template '{files}')" = '.hgtags' ]; then
echo tag only
else
echo other stuff too
fi
Just swap out tip
for whatever changeset you're about to act on, and change the echo statements to an exit
, a make
, or a hg tag
as appropriate to either skip the build or just skip the creating of a new tag if the last changeset was only a tag.