如何仅为标签运行TeamCity构建?

时间:2014-03-19 14:31:56

标签: teamcity nuget build-process

我有几个项目可以生成我发布到内部服务器的NuGet包。我们正在使用semantic versioning,并在我们的Git存储库中使用标记来控制版本号。

我这样标记:

git tag -a v1.0.0 -m "tagged"

并且,在TeamCity构建期间,我运行git describe --long,它产生如下输出:

v1.0.0-0-ge9c047d

输出中的第四个数字是标记后的提交数。这里的0表示自标签以来没有提交任何提交。我使用前四个数字作为版本号(顺便提一下,整个字符串作为AssemblyInformationalVersion)。

我有TeamCity软件包并发布了一个NuGet软件包,但这里有粘性。我只想发布标签,从不在标签之后提交(因为在这种情况下版本号会出错,可能非常错误)。

我已尝试设置"分支规范"在VCS根目录中" +:refs / tags / *",这会导致构建所有标记,但TeamCity也坚持构建"默认分支"同样。如果我设置"默认分支"对于那些不存在的东西,我收到了一个错误。

如果某个特定的版本没有标记,我已经考虑过尽早结束构建,但是如果不对构建失败,我无法弄清楚如何做到这一点,这不是什么我想要。

如何使一个或多个构建步骤仅针对新标记运行,而不是常规提交?

1 个答案:

答案 0 :(得分:10)

如果您使用的是TeamCity 8.x,现在支持VCS branch triggers,这将允许您不从默认分支运行构建。

试试这个:

  1. 将VCS Root中的分支规范保留为“+:refs / tags / *”
  2. 将VCS构建触发器规则更改为:

    +:*

    - :其中默认>

  3. 这将从触发器中过滤掉默认分支,您无需取消构建。