如何为多个提交触发一个 TeamCity 构建,但一个合并到一个分支

Posted

技术标签:

【中文标题】如何为多个提交触发一个 TeamCity 构建,但一个合并到一个分支【英文标题】:How to trigger one TeamCity build for multiple commits but one merge into a branch 【发布时间】:2013-12-21 06:21:41 【问题描述】:

我正在尝试为 VCS 中的单个合并触发单个 teamcity 构建。我的 CI 布局方式是一个分支阶段,我们将所有更改合并到其中。然后,当我们想要部署到生产环境时,我们将 staging 合并到 git 中的 master 分支中。不幸的是,这会触发大量构建,可能每次签入到暂存分支时都会触发一个构建。所以相反,我们希望它是一个单一的构建。因为它是一次合并到主分支。

那么,无论有多少不同的人进行了多少次签入,是否有人知道如何根据 VCS 的更改触发单个构建?

我在团队城市的构建触发器中选择的选项如下。

 Trigger a build on each check-in
 Include several check-ins in a build if they are from the same committer

我想我可以使用自定义构建触发器来做到这一点,但我不想走这条路。

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

尽管有悖常理,但取消选中 Trigger a build on each check-in 复选框应该可以解决此问题,只要您启用安静期足够长的时间以包含所有签入。

本质上Trigger a build on each check-in 的意思是“在每个构建中只包含 1 个签入”。禁用该选项仍会导致构建由签入触发,但将包括在构建实际开始之前发生的所有签入(来自所有用户)。 TeamCity 应该在他们的文档中明确说明这一点或重命名该选项。

【讨论】:

是的,这解决了它。如果您查看文档,它会更清晰一些,但对话框并不清晰。【参考方案2】:

您需要使用或覆盖 Quiet Period 来代替处理暂存合并的分支。

我猜为了只为该分支指定安静期,您可能需要单独的构建配置。获取您的主要构建配置,并在您管理它的任何屏幕上,您应该会在“提取模板”右侧看到一个按钮。

然后,您可以使用该模板为您的暂存分支创建另一个构建配置,并覆盖触发器上的静默期。

【讨论】:

以上是关于如何为多个提交触发一个 TeamCity 构建,但一个合并到一个分支的主要内容,如果未能解决你的问题,请参考以下文章

TeamCity 构建链触发

TeamCity 不会触发自动构建

如何清除TeamCity 7+中待处理的VCS更改?

分支远程运行触发器不在Teamcity上运行

TeamCity Perforce 错误 - 没有要提交的文件

如何:Teamcity + GitHub