我有几个项目可以生成我发布到内部服务器的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也坚持构建"默认分支"同样。如果我设置"默认分支"对于那些不存在的东西,我收到了一个错误。
如果某个特定的版本没有标记,我已经考虑过尽早结束构建,但是如果不对构建失败,我无法弄清楚如何做到这一点,这不是什么我想要。
如何使一个或多个构建步骤仅针对新标记运行,而不是常规提交?
答案 0 :(得分:10)
如果您使用的是TeamCity 8.x,现在支持VCS branch triggers,这将允许您不从默认分支运行构建。
试试这个:
将VCS构建触发器规则更改为:
+:*
- :其中默认>
这将从触发器中过滤掉默认分支,您无需取消构建。