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



我们正在使用SVN进行开发,没有机会进行转换,因为我们在一家不允许这样做的大公司。

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

当每个人都致力于主干网时,这很好。然而,在我们冻结代码并投入使用后,我们需要切换到不同的模型。我们正在考虑按每个特性进行分支,然后将几个分支合并回一个版本。

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

TeamCity可以从几个功能分支中自动合并到一个临时分支吗?

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

我的其他选择是什么?

让每个人都提交到一个手动构建的开发分支,然后在准备好进入UAT时从那里挑选到trunk,然后继续运行,然后从trunk创建一个新的开发分支并挑选其他没有进入UAT的提交?

在CI中提供分支功能的一个流行解决方案是

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

  2. 让一个CI箱监听分支存储库以运行一组基本检查(编译代码、运行所有单元和组件测试、快速烟雾测试)

  3. 如果成功,将最新的中继合并到您的工作副本中

  4. 如果合并成功且没有冲突,则将工作副本提交到中继

  5. 在主干的新版本候选上运行其余的集成和系统测试

我们的想法是,尽可能频繁地发布。将行李箱中的每一件东西都作为生产准备

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

  1. 拥有支持功能分支的CI技术(否则,您将为每个功能配置新的管道配置)
  2. 与Git等较新的工具相比,Svn合并可能有点痛苦。你只需要处理较小的变更集,经常从主干进行更新,并拥有较小的类

最新更新