如何为多个提交触发一个 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 构建,但一个合并到一个分支的主要内容,如果未能解决你的问题,请参考以下文章