2013-12-19 74 views
0

我们正在使用SVN进行开发,并且没有机会切换,因为我们处于不允许它的大型公司。具有持续集成的多功能分支机构 - 部署

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

这是很好,当每个人都承诺干线。但是,在我们将代码冻结并启用后,我们需要切换到其他模型。我们正在考虑为每个功能分支,然后合并几个分支来制作发布。

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

TeamCity会自动从几个功能分支中合并成一个分段分支吗?

这被提及DVCSs所以并不真正适用 http://blog.jetbrains.com/teamcity/2013/10/automatic-merge/

我有什么其他选择?

有没有人提交到一个手动构建的开发分支,然后樱桃选择从那里到树干准备去UAT然后生活,然后从树干创建一个新的开发分支和樱桃选择其他未提交的提交它到UAT?

+0

您最终选择哪种解决方案?我发现自己和你所描述的情况类似。我现在正在开发的这个项目一直在使用SVN进行基于trunk的开发几年,最近刚刚通过TeamCity和Web Deploy(.net mvc web app)开始开发基本的CI/CD。管理层现在想开始做独立的功能分支,我正在寻找最佳实践。 –

回答

0

一种流行的解决方案为特色分支机构CI是,

  1. 提交你的工作,你的分支

  2. 有一个CI盒听分支库运行一套基本检查(编译代码,运行所有单元&组件测试,快速烟雾测试)

  3. 如果成功,合并从主干上的最新到工作副本

  4. 如果合并成功,没有冲突,提交工作拷贝到主干

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

的想法是,你释放尽可能经常地。将生产中的每件东西都作为生产准备好

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

  1. 有一个CI技术与功能分支的支持(否则你将被配置为每个功能新的管道配置)
  2. SVN合并可以是一个有点痛相比,如Git较新的工具。你只需要在较小的变更集上工作,经常从中继线更新并拥有较小的类别
+0

合并步骤是手动还是自动?你会如何自动做到这一点?我假设合并冲突的构建失败。 – opticyclic

+0

我会尝试首先自动化它,这取决于您使用的构建工具。如果发现冲突,应该抛出构建失败。 如果在代码提交之前从主干更新功能分支,则应该减少管道中合并冲突的可能性。 –

相关问题