12

我正在使用 TeamCity 2017.1.4 和 GitVersion。

teamcity 项目本身包含许多构建配置,其中第一个是运行 GitVersion,然后所有后续步骤对该步骤进行快照依赖并从其参数中提取版本。

在大多数情况下,这很有效,但是如果我们创建一个新分支,例如。/release-foo 并推送它,teamcity 将不会触发构建,因为它之前已经构建了提交 sha,不幸的是,我们需要它再次触发,因为即使提交没有改变,在新分支中也意味着它将获得不同Git 版本号。

我尝试强制始终重建 GitVersion 构建配置上的快照依赖项,但这似乎有点丑陋,因为它破坏了所有其他不存在问题的场景。我也知道我可以手动触发构建,告诉它重建所有依赖项并且它会起作用,但是我很好奇是否有更好的方法让 teamcity 自动触发构建以在分支上进行提交(如果该分支没有)以前存在,或者实际上我可以通过任何其他方式来解决这个问题。

4

3 回答 3

1

您可以通过从 git 挂钩触发构建来实现此目的。

正如这里所解释的,您可以使用update挂钩来识别推送的分支(即使在单个操作中推送了多个分支),并且对于每个分支(假设它通过您的触发规则)使用REST API触发 TeamCity 构建。

于 2017-10-21T08:20:57.327 回答
1

您可以尝试配置 TeamCity 以在构建中包含不同/更多GitVersion 版本变量,包括分支名称和可能的版本标签。这将为您的构建过程提供一种区分不同分支上的相同提交的方法。

有关如何在 TeamCity 中使用附加信息的一些示例,请参阅此 CD 文章的步骤 1-5 ,以及有关使用 GitVersionTask 的详细博客文章。

于 2017-10-20T19:36:47.833 回答
0

如果您只是在新分支上修改提交而不修改任何内容,它将因为时间戳更改而获得新的哈希。我不认为这是一个很好的解决方案,但恕我直言,它比手动触发要好。

于 2017-10-25T19:27:41.967 回答