在我工作的软件开发环境中,我们有一组开发人员都在同一个(Java)代码库(当前使用SVN)工作。 我注意到,人们希望经常提交他们没有“破坏构建”而构建的内容。所以出于这个原因,我正在寻找像Git和Mercurial这样的工具,使分支和特别合并变得更加容易。持续集成工作流程理念
我看到的一件事是,如果开发人员提交'错误代码',那么代码就会被打破。作为一个避免这种想法的想法,我想要一种具有“中间单一特征”存储库的方法,该存储库仅仅是当前的“主”,只有该单一新功能的一个变更集。然后,在成为主要代码库之前,可以自动测试这种“中间单一特征”存储库(代码质量,单元测试,手动代码检查等)。
所以我想到的工作流程看起来像这样:
- 开发人员创建一个新功能并每天在本地提交。
- 经过一段时间后,开发人员完成并提交整个变更集以集成到“主”存储库中。
- 持续集成系统采用当前的“主”,应用更改集并检查代码(合并冲突,PMD,FindBugs,...),运行单元测试,检查编码风格等。
- 如果CI系统决定“坏代码”,开发者被告知原因,开发者必须解决上述问题。在这种情况下,主存储库不变。
- 如果CI系统决定“足够好”,那么代码将到达“首席开发人员”或“代码审查人员”,他们会检查所选解决方案并批准或拒绝该解决方案。
- 然后将批准的变更集包含到主存储库中,并供所有开发人员进行重定位/合并。
我对这种工作流程的一些问题:
- 你的事情,这将在实践中很好地工作(即这是一个好主意或一个真正的新空房禁地之一)?
- 以前有没有人和你一起工作过?亲和的是什么?
- 是否有一个'准备好运行'的脚本/程序/工具/ ...,可以在最短的时间内启动这样一个工作流程(或这个想法的变体)?
谢谢。
背景说明:
我已经在那里建立内部类似的工作流程中的公司约13年前曾作为开发商,他们有两个每晚构建:
- “生产'版本:主代码库
- '高级版本:主代码库包含所有新提交版本的所有更改文件。
因为这是所有SCCS(锁定编辑 - 解锁模式)的基础上没有办法'经常',你有代码更改和所有其他类型的讨厌影响的死锁。 我期待的主要是关于当时使用当今更好的工具的东西。
我读的页面,看来,如果“提交”的变化,则系统会立即开始运行。如果你想“经常提交”,但是只想在你认为完成时就开始工作,这是如何工作的。如果你使用测试驱动开发,你首先进行(和提交)故意“破坏构建”的测试,以显示仍然需要添加的功能。 – 2009-07-10 11:38:03