在应用标签时触发构建

15
我希望实现以下内容:
  1. 开发团队中任何人在dev分支上创建一个标签,比如Demo_Build_1。
  2. TeamCity应该能够检测到这个新标签,并仅构建此标签。
我已经在VCS配置中启用了“将标签视为分支”的复选框。 我尝试过配置,但无法使其正常工作。以下是我的VCS设置: enter image description here
以下是我的构建触发器配置方式: enter image description here 我不想手动触发构建。我的想法是,TeamCity应该能够捕捉到这个新的标签并运行构建。有任何指针来实现这个目标将会很有帮助。

尝试将 +:Demo* 替换为 +:refs/tags/Demo* 了吗? - bluescores
3个回答

11

您几乎做对了。您可以使用配置参数teamcity.vcsTrigger.runBuildInNewEmptyBranch=true来告诉TeamCity在标签创建时进行构建--https://youtrack.jetbrains.com/issue/TW-43606。否则,当您看到新标签时,TeamCity不会触发构建。


这难道不会导致每次推送新分支都运行一个新的构建吗? - Big Money
@BigMoney,可以的,但是你可以在触发器中使用分支过滤器来限制你想要运行的分支。 - Marc Durdin
这似乎不对吧?runBuildInNewEmptyBranch 是指新分支和新标签吗? - Storm Muller
1
@StormMuller,是的,据我所知。 - Marc Durdin

5
由于我没有找到完整的答案,所以我想节省其他人几个小时的试错时间。我没有通过编辑分支规范来仅构建标签。 在VCS触发器和VCS根中使用分支规范会导致无法构建。添加一个 -:refs/heads/dev 分支规范仍然会构建分支中的提交。作为解决方法,可以创建一个未使用的分支,并将其指定为默认分支。这样,由于没有人提交到该分支,因此不会构建常规提交,并且始终会构建标签。
以下是操作步骤:
  1. 创建第二个仅监视标签的VCS根
  2. 在第二个VCS根的分支规范中删除您不想在常规提交上构建的默认分支,并添加 refs/tags/*
  3. 添加一个没有分支过滤器的VCS触发器
  4. 触发器设置应如下所示
  5. 添加魔术配置参数
这是我的设置外观: enter image description here enter image description here enter image description here enter image description here enter image description here

所有的图片链接都已经损坏,这并不是特别有用。 - Tom Bogle
我可以正常地看到这些图片。 - jsaddwater
1
可能被过滤软件屏蔽了。我很抱歉。 - Tom Bogle

1
我的配置与@jsaddwater的配置非常相似,但略有不同: 版本控制设置 > 分支过滤:
+:*
-:<default>

版本控制设置 > VCS根:

  • 默认分支: 主分支

  • 分支规范:

+:refs/tags/*
-:<default>
  • ☑ 允许在分支规范中使用标签

触发器 > VCS 触发器:

  • 分支过滤器: (留空)

参数:

添加或设置配置参数: teamcity.vcsTrigger.runBuildInNewEmptyBranch 的值为 true。


已在TeamCity 2019.1.5上测试并工作正常。


1
我该如何防止触发器在分支的任何新更改上运行,并仅在创建新标签时运行构建? - Mitesh Gangaramani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接