我正在使用TeamCity 2017.1.4以及GitVersion。
teamcity项目本身包含许多构建配置,第一个是运行GitVersion,然后所有后续步骤都依赖于此步骤的快照,并从其参数中提取版本。
在大多数情况下,这很有效,但是如果我们创建一个新分支,例如。 / release-foo并推送这个,teamcity不会触发构建因为它之前已经构建了commit sha,不幸的是我们需要它再次触发,即使提交没有改变是在新分支中意味着它会得到一个不同的GitVersion号码。
我已经尝试强制GitVersion构建配置上的快照依赖项总是被重建,但这看起来有点难看,因为它会破坏所有其他不是问题的场景。我也知道我可以手动触发构建,告诉它重建所有依赖项并且它会工作,但是我很好奇是否有更好的方法来让teamcity自动触发分支上的提交构建,如果该分支没有以前存在,或者实际上我可以采用任何其他方式。
答案 0 :(得分:1)
您可以尝试配置TeamCity以在构建中包含不同/更多GitVersion version variables,包括分支名称和可能version tags。这将为您的构建过程提供一种方法来区分不同分支上的相同提交。
有关如何在TeamCity中使用其他信息的示例,请参阅this CD post的步骤1-5以及此detailed blog post on using GitVersionTask。
答案 1 :(得分:1)
您可以通过从git hook触发构建来实现此目的。
正如here所解释的那样,您可以使用update
挂钩来识别推送的分支(即使在单个操作中推送了多个分支)和每个分支(假设它通过了您的触发规则)触发器使用REST API进行的TeamCity构建。
答案 2 :(得分:1)
如果您只修改新分支上的提交而不修改任何内容,则会因时间戳更改而获得新哈希。我不认为这是一个很好的解决方案,但是它比手动触发更好。