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

如何仅为标签运行TeamCity构建?,teamcity,nuget,build-process,Teamcity,Nuget,Build Process,我有几个项目可以生成我发布到内部服务器的NuGet包。我们正在使用Git存储库中的标签来控制版本号 我是这样做的: git tag -a v1.0.0 -m "tagged" v1.0.0-0-ge9c047d 在TeamCity构建过程中,我运行了git descripe--long,它会生成如下输出: git tag -a v1.0.0 -m "tagged" v1.0.0-0-ge9c047d 输出中的第四个数字是标记后的提交数。此处的0表示自标记之后未进行任何提交。我使用前四个数

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

我是这样做的:

git tag -a v1.0.0 -m "tagged"
v1.0.0-0-ge9c047d
在TeamCity构建过程中,我运行了
git descripe--long
,它会生成如下输出:

git tag -a v1.0.0 -m "tagged"
v1.0.0-0-ge9c047d
输出中的第四个数字是标记后的提交数。此处的
0
表示自标记之后未进行任何提交。我使用前四个数字作为版本号(顺便说一句,整个字符串作为AssemblyInformationalVersion)

我有TeamCity软件包,并发布了一个NuGet软件包,但这是它变得棘手的地方。我只想发布标签,从不在标签之后提交(因为在这种情况下,版本号可能是错误的,可能是非常错误的)

我已尝试将VCS根目录中的“分支规范”设置为“+:refs/tags/*”,这将导致生成所有标记,但TeamCity也坚持构建“默认分支”。如果我将“默认分支”设置为不存在的某个分支,则会得到一个错误

我曾经考虑过,如果某个特定的构建不是一个标记,那么应该提前结束构建,但是我不知道如何在不失败构建的情况下完成构建,这不是我想要的


如何使一个或多个生成步骤仅针对新标记运行,而不是定期提交?

如果您使用的是TeamCity 8.x,现在支持,这将允许您不从默认分支运行生成

试试这个:

  • 将VCS根目录中的分支规范保留为“+:refs/tags/*”
  • 将VCS生成触发规则更改为:

    +:*

    -:


  • 这将从触发器中筛选出默认分支,您无需取消生成。

    这已关闭,但单击“运行”按钮仍将生成默认分支。在这种情况下,预期的行为是什么?问得好。我猜会有一些东西运行,但在这种情况下,我不希望任何东西部署到NuGet服务器,这意味着最终的构建步骤不会执行。理想情况下,构建不会失败,只是不会导致任何工件的部署?最新的标签?最新提交?这是完全可行的,通过使用依赖构建配置,并仅在发布NuGet构建配置上放置适当的标记触发器。