2012-12-15 81 views
3

有什么办法可以将成功构建的功能分支推送到另一个分支吗?TeamCity推送功能分支到主分支

我想有这样的事情:

Git仓库(Gitorious/GitHub的什么)。分行:

  • 主(当前项目的代码)
  • 质量保证(领域,其中代码等待QA)
  • 功能分支(许多远程分支,在那里开发者可以下发展及其功能)

开发人员应该只能读取主人并读取/写入他的功能分支 QA读/写质量保证分支 TeamCity - 读/写主人,质量保证,只读功能分支

现在,我想有这样的工作流程:

  1. 开发者从主分支拉码。
  2. 开发人员创建功能分支-A。
  3. 开发者将更改到远程功能branchA
  4. TeamCity的监视器配备分支
  5. TeamCity的触发建立并在每个测试提交。
  6. 的TeamCity将更改,以质量为保证分支,如果构建成功
  7. QA团队检查码(或许运行了一些其他的测试,完整性测试)
  8. 如果QA决定一切正常,他们将更改推送到主分支。

我不知道如果QA的这一步是必要的,也许每个功能分支后,成功的构建和测试应该与主合并。

首先我想知道:它有道理吗?我只是从CI开始,我不知道它是否会起作用。其次,如果这个工作流是正确的,我想知道如何配置TeamCity来做类似的事情,以及如果会有某种冲突或某些事情可能出错。

最近我看到有关Git + Jenkins + Gerrit的演讲,我看到类似的东西,但对于.NET开发,我个人更喜欢TeamCity,但如果Jenkins更容易做到这一点,我就会改变主意。

回答

1

我们已经使用github实现了与此目标相同的工作流程(尽管实现稍有不同),尽管它可能涉及到一些设置,以确保teamcity存在一些问题。我还有类似问题的另一个答案here

我们的解决方案基本上涉及每个开发者都有自己的主存储库的分支,他们已经读取和写入权限并从主(绿色)存储库提取权限。开发分支(每个故事一个,短暂)的工作,这是由团队城市建立时,他们推到他们的个人分岔。

一旦开发人员准备好将他们的更改合并到主人中,他们会提交一个拉取请求并检查代码,然后最终与他们的主分支进行合并。然后他们将他们的主人布兰克推到他们的私人叉子上。

如果此构建成功并且所有测试都通过(我们现在还部署到Azure,然后针对部署运行测试),那么主分支由团队城市构建代理推送到绿色存储库。

这推必须是快进或推被拒绝(这解决了自动合并,这让我充满恐惧的潜在问题)

您可以轻松地扩展这个有开发者分支推到QA库和QA对生成服务器执行提交,触发推送到绿色(或者让QA有权推入绿色)。

teamcity setup可能有点痛苦,因为你需要链接快照依赖的东西,这就限制了使用模板的能力,并且意味着每个开发者至少需要2个构建配置(我们有4个构建随着部署到天蓝色和运行测试对蔚蓝),所以如果你有很多开发人员,这可能是一个痛苦的管理。理想情况下,您不应该这样做,但由于issues in teamcity仍然未解决,因此如果测试失败,则不能始终使构建失败。

+0

我已经读过你的解决方案,并根据它的配置TeamCity的。这只是一个PoC,目的是展示它的全貌如何,但现在我将安装它进行生产。 Thx分享一个伟大的职位。我不想使用github,而是使用Atlassian Stash(小团队)。不知道我是否会切换到Girious,我们会看到。 GitHub不是一个选项。同样可惜的是TeamCity需要两个构建配置,因为我们可以快速用完免费的cnfigurations,但正如我所说,我们将看到它是如何工作的。 Thx再一次。 – Simon

2

看起来像一个有效的场景。

更新:由于TeamCity 8.1有一个专用的Automatic Merge功能。

较旧的回复: TeamCity没有捆绑支持自动合并/推动分支机构(对于上面的列表中的数字6)。 TeamCity问题跟踪器中有一个相关feature request

要获得在当前TeamCity版本中工作的场景,您可以在TeamCity中拥有一个单独的构建配置,具有快照依赖性和成功时触发器,它将抓取功能分支(由TeamCity完成),然后构建脚本将运行合并,推git命令。您将需要使用TeamCity代理端结帐才能做到这一点。

+0

大概你可以注意到这个特性已经在TeamCity 8.1中实现了:http://blog.jetbrains.com/teamcity/2013/10/automatic-merge/ – KIR

相关问题