具有持续集成的多个功能分支 - 部署

时间:2013-12-19 16:51:23

标签: svn continuous-integration branching-and-merging

我们正在使用SVN开发,没有机会切换,因为我们在一家不允许它的大公司。

我们正在开发的客户端/服务器应用程序每晚使用TeamCity构建和部署,以便第二天用户/测试人员/开发人员可以测试最新代码。由于系统的性质,必须部署一些部件才能进行测试。例如服务器端部分,Swing GUI,需要在运行之前存储在db中的新配置等。

当每个人都致力于行李箱时,这很好。但是,在我们冻结代码并上线后,我们需要切换到不同的模型。我们正在考虑对每个功能进行分支,然后合并几个分支以进行发布。

这有利于保持代码清洁,但我们如何对每个功能进行手动测试?我们没有足够的硬件来部署每个功能分支。即使我们这样做,测试也会很繁琐,因为您必须登录多个环境才能看到所有最新功能。

TeamCity是否可以从多个功能分支中自动合并到一个暂存分支?

这是针对DVCS提到的,所以并不真正适用 http://blog.jetbrains.com/teamcity/2013/10/automatic-merge/

我的其他选择是什么?

让每个人都提交一个手动构建的开发分支,然后在准备好去UAT然后生活的时候从那里开始挑选,然后从主干创建一个新的开发分支,并选择其他没有成功的提交去UAT?

1 个答案:

答案 0 :(得分:0)

CI中功能分支的一种流行解决方案是

  1. 将您的工作提交给您的分支机构

  2. 让CI框侦听该分支存储库以运行一组基本检查(编译代码,运行所有单元和组件测试,快速冒烟测试)

  3. 如果成功,请将最新的主干合并到您的工作副本

  4. 如果合并成功且没有冲突,请将工作副本提交到主干

  5. 对来自trunk

  6. 的新候选版本运行其余的集成和系统测试

    这个想法是,你尽可能多地发布。将每个东西放在后备箱中作为生产准备好

    这种方法的两个主要问题是;

    1. 拥有支持功能分支的CI技术(否则,您将为每个功能配置新的管道配置)
    2. 与像Git这样的新工具相比,Svn Merging可能会有点痛苦。您只需处理较小的更改集,经常从主干更新并使用较小的类