TeamCity推送功能分支到主分支

时间:2012-12-15 21:40:09

标签: git jenkins continuous-integration workflow teamcity

有没有办法将成功构建的功能分支推送到另一个分支?

我想有类似的东西:

Git存储库(Gitorious / GitHub等)。分支:

  • master(当前项目代码)
  • 质量保证(代码等待质量保证的分支)
  • 功能分支(许多远程分支,开发人员可以开发其功能)

开发人员应该只具有对master的读访问权以及对其功能分支的读/写权限 QA读/写质量保证分支 TeamCity - 读/写主,质量保证,只读特征分支

现在我希望有这样的工作流程:

  1. 开发人员从主分支中提取代码。
  2. 开发人员创建feature-branch-A。
  3. 开发人员将更改推送到远程feature-branchA
  4. TeamCity监控功能分支
  5. TeamCity触发每次提交的构建和测试。
  6. 如果构建成功,TeamCity会将更改推送到质量保证分支
  7. QA团队检查代码(可能运行其他一些测试,完整性测试)
  8. 如果质量检查决定一切正常,他们会将更改推送到主分支。
  9. 我不知道QA的这一步是否必要,并且成功构建和测试后的每个功能分支都应该与master合并。

    首先我想知道:它有意义吗?我刚刚开始使用CI,我不知道它是否有用。

    其次,如果这个工作流程是正确的,我想知道如何配置TeamCity做类似的事情,以及如果会出现某种冲突或出现问题的原因。

    最近我看了演示大约GIT中+詹金斯+格里特在那里我看到类似的东西,但对于.NET开发,我个人更喜欢TeamCity的,但如果它是很容易做的,与詹金斯,我改变了主意。

2 个答案:

答案 0 :(得分:2)

似乎是一个有效的场景。

更新:自TeamCity 8.1以来,有一个专用的Automatic Merge功能。

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

要使场景在当前的TeamCity版本中运行,您可以在TeamCity中具有单独的构建配置,其中包含快照依赖性和成功触发器,这将获取功能分支(由TeamCity完成),然后构建脚本将运行合并和推送git命令。您需要使用TeamCity代理端签出才能执行此操作。

答案 1 :(得分:1)

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

我们的解决方案基本上涉及每个开发人员拥有自己的主存储库的分支,他们已经从主(绿色)存储库读取和写入权限和拉取权限。开发人员在分支机构(每个故事一个,短暂的一个)上工作,这些分支机构是由团队城市建立起来的。

一旦开发者准备好将他们的更改合并到主人,他们就会提交拉取请求并审查代码,然后最终与他们的主分支合并。然后他们将他们的主人bramnch推到他们的私人叉子上。

如果此构建成功且所有测试都通过(我们此时也部署到azure,然后针对部署运行测试),则主分支将由团队城市构建代理推送到绿色存储库。

此次推送必须是快进或推送被拒绝(这解决了自动合并的任何潜在问题,这让我感到恐惧)

您可以轻松扩展此项以使devs分支推送到QA存储库,QA执行构建服务器的提交,从而触发推送到绿色(或让QA有权推送到绿色)。

团队城市设置可能有点痛苦,因为您需要使用快照依赖关系链接,这会禁止使用模板的能力,这意味着每个开发人员至少需要2个构建配置(我们有4个处理部署到天蓝色和运行测试对azure)所以如果你有很多开发人员这可能是一个痛苦的管理。理想情况下,您不应该这样做,但由于issues in teamcity尚未解决,如果测试失败,您无法始终使构建失败。