3

我们的开发部门在增长,我想强制一个稳定的主干/主干。

到目前为止,每个开发人员都可以提交到主干/主干。将来开发人员应该提交到暂存区,如果所有测试都通过,代码会自动移动到主干。如果测试失败,开发人员会收到一封包含失败测试的邮件。

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

到目前为止,我们运行 SVN 和 git,但如有必要,可以将所有 repos 切换到 git。

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

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

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

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

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

更新

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

4

3 回答 3

2

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

自从我们约 20 人的基于 PHP/ZF1 的开发团队在冬天从 SVN 切换到 Git(我成为事实上的 git mess-fixer)以来,一直在研究 CI 的这个特定方面的准病态,我可以'只能分享我在持续集成这一特定方面的经验。

显然,将“大量单元测试运行”与大量条件参数化的 Jenkins 作业相结合,触发无限更多的条件参数化作业,涵盖所有可以想象的情况,这将(也许)是迈向持续集成/交付/部署模型,这种迁移所需的肉类空间资源并非微不足道。

一些问题:

  • 您的团队是否定义了某种 VCS 工作流程或至少定义了规则?

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

  • 您的团队(/高级开发人员)是否真的有时间/有兴趣充分利用 gerrit 的基于同行的代码审查功能?

  • 平均而言,您在任何一天/一周/一个月内部署到生产环境的次数是多少?

如果这些问题中的一个以上的答案是“不”、“没有”或“很少/很少”,那么我可能会考虑在将 Jenkins 投入到混合。

另外,git-hooks。 认真的。

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

它是同样精明的表弟:

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

于 2013-07-16T08:47:16.723 回答
1

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

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

  • gerrit用于编码审查
  • Jenkins是一个作业调度程序,可以运行您想要的任何作业,包括:
    • 编译一切
    • 启动唯一的单元测试。

在每种情况下,想法都是做一些受保护的提交,即推送到中间仓库(gerrit,或由 Jenkins 监控的仓库),并且只有在中间过程(审查或自动构建/测试)成功通过时才推送到最终仓库.

通过添加中间存储库,您可以轻松地在最终的“祝福”存储库上强制一个唯一的分支,如果提交被认为是值得的,这些中间引用将推送到该存储库。

于 2013-07-08T11:12:45.590 回答
1

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

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

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

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

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

  • 测试:CI 的 10 条原则之一是“自测构建”。换句话说,您必须运行大量的单元测试。开发人员必须被测试感染。单元测试必须成为每个开发人员个人开发过程中自然的、高度重视的部分。以我的经验,建立测试感染文化是部署 CI 最难的部分。
  • 频繁签到:开发人员和管理人员必须以允许频繁进行小规模签到的方式组织那里的工作。CI 要求每日签到。这有时是一个很难养成的习惯。
  • 对反馈的响应能力:CI 是关于即时反馈的。开发人员必须适应即时反馈。如果单元测试失败,则构建失败。在 CI 构建中断的 15 分钟内,负责的开发人员应该签入修复程序,或者撤销原始的错误签入。
于 2013-07-15T13:13:03.417 回答