强制稳定的主干/主分支

时间:2013-07-08 10:55:12

标签: version-control jenkins continuous-integration gerrit

我们的开发部门不断壮大,我想强制建立一个稳定的主/主干。

到目前为止,每个开发人员都可以提交到master / trunk。在未来,开发人员应该进入临时区域,如果所有测试都通过,代码将自动移动到主干。如果测试失败,开发人员会收到包含失败测试的邮件。

我们有几个存储库:一个用于核心产品,一个插件和每个客户的存储库。

到目前为止,我们运行SVN和git,但如果需要,可以将所有存储库转换为git。

哪种软件可以帮助我们完成这项工作?

网上有一些文章解释了如何使用gerrit和jenkins来强制稳定的分支。

我不确定我是否需要两者,或者是否更好地使用其他东西。

环境:我们是10个开发人员,使用python和django。

问题:哪个工具可以帮助我强制稳定的主分支?

更新

我正在度假,现在赏金已经过期了。对不起。谢谢您的回答。

3 个答案:

答案 0 :(得分:2)

  

问题:哪个工具可以帮助我强制稳定的主分支?

自从我们~20人基于PHP / ZF1的开发团队在冬天从SVN切换到Git(我成为事实上的git mess-fixer)之后,一直在研究CI这一特定方面的准病理学,我不禁分享了我对持续整合这一特定方面的经验。

显然,将“临界质量的单位测试运行”与一系列有条件参数化的Jenkins工作相结合,触发无限更多条件参数化工作,涵盖所有可想象的环境(或许)将是最好和最合适的方式朝着持续集成/交付/部署模型迈进,这种迁移所需的meatspace资源并非无关紧要。

有些问题:

  • 您的团队是否有某种VCS工作流程,或者最低限度地定义了规则?

  • 您粗略地说您的代码库在某种行为(例如硒),功能或单元测试中的百分比是多少?

  • 您的团队(/资深开发者)是否真的有时间/兴趣充分利用gerrit基于同行的代码审核功能?

  • 平均而言,您在任何指定日/周/月内部署到生产的次数是多少次?

如果这些问题不止一个的回答是“不”,“没有”或“很少/很少”,那么我可能会考虑投入一些白板时间来考虑你的团队的一般工作流程詹金斯融入其中。

另外,git-hooks。 Seriously

但是,如果你非常热衷于拥有一个CI / Jenkins服务器,或者你已经掌握了所有这些基础知识,那么我会指出这个真正非凡的博客文章:

同样精明的堂兄:

哦,当然,非常必要的devopsreactions tumblr。

答案 1 :(得分:1)

  

网上有一些文章解释了如何使用gerrit和jenkins来强制稳定的分支。

     

我不确定我是否需要两者,或者是否更好地使用其他东西。

  • gerrit用于编码审核
  • Jenkins是一个可以运行您想要的任何工作的作业调度程序,包括一个:
    • 编译所有内容
    • 推出单一单元测试。

在每种情况下,想法是做一些 guarded commit ,即推送到中间回购(gerrit,或Jenkins监控的回购),并且只推送到最终回购中间过程(审查或自动构建/测试)成功通过。

通过添加中间回购,您可以轻松地在最终的“祝福”回购中强制使用一个唯一的分支,如果认为这些提交被认为是值得的,那么这些中间参考将推送到该回购。

答案 2 :(得分:1)

听起来您正在寻求建立标准CI功能。您将需要以下基本工具:

  • 源版本控制:SVN,git(这里已经介绍过)
  • CI服务器:Jenkins(您需要构建并运行每个测试 签入并报告结果。詹金斯是事实上的标准工具 用于此)
  • 测试:PyUnit
  • 工件存储库:您将需要一种组织和机制 归档每个构建创建的增量。这可能是一个 简单的家庭成长目录系统。我也用过Archiva, 但还有其他工具。

根据您的开发过程,还有许多其他可能有用的工具:

  • 代码审查:如果您想让代码审查成为您的正式门户 过程中,Gerrit是一个很好的工具。
  • 代码覆盖率分析:我过去曾使用过EMMA作为Java。我是 确定这是Python覆盖的一些好工具。
  • 许多其他人:Jenkin的插件库,提供各种各样的插件 有用的工具可供您使用。花一些时间来审查 可用的插件肯定会花时间。

根据我的经验,建立正确的文化与寻找合适的工具同样重要。

  • 测试:CI的10个原则之一是“自我测试构建”。在 换句话说,您必须运行大量的单元测试。 开发人员必须成为测试感染者。单元测试必须成为一个 自然,高度重视每个开发人员个人发展的一部分 处理。根据我的经验,建立一种测试感染的文化 是部署CI最难的部分。
  • 经常办理登机手续:开发人员和经理必须组织工作 以允许频繁小额登记的方式。 CI呼吁每天 签入。这有时是一个难以建立的习惯。
  • 对反馈的回应:CI是关于即时反馈的。该 开发人员必须有条件回应即时反馈。 如果单元测试失败,则构建它会破坏。在CI的15分钟内 构建破坏,负责的开发人员应该有一个修复 办理登机手续,或办理原始的差办理登机手续。