帮助我改进我的持续部署工作流程

Jos*_*ith 36 php workflow continuous-integration hudson selenium-rc

我一直在为PHP项目开发一个实现大多数自动化连续部署周期的工作流程.我想对此工作流程中可能的流程或技术瓶颈,改进建议以及如何更好地自动化和增加团队易用性的想法提供一些反馈.


核心组件:


编辑:我已经改变了工作流程图形采取ircmaxwell的贡献考虑在内:删除PHPUnit的扩展Selenium RC和运行这些测试仅作为QC阶段的一部分; 增加QC阶段; 在代码审查之后但在合并之前移动UI测试; 在QC阶段之后移动合并; 合并后移动部署.

此工作流程图描述了该过程.我的问题/想法/关注如下.

持续部署工作流程

我的疑虑/想法/问题:

  • 使用该系统的总体困难.

  • 时间参与.

  • 难以招聘Gerrit.

  • 难以招聘Puppet.

  • 我们稍后将在Amazon EC2实例上进行部署.如果我们要了解如何设置Debian与包Puppet和部署到Linode现在片,有没有对工作部署的潜力Linode来打破EC2?我们应该从一开始就进行构建和部署EC2吗?

  • 另一个问题:EC2Puppet.我们也在考虑使用Scalr作为解决方案.是否有必要避免Puppet单独开销并投资Scalr?我这里有关于成本的次要问题(ha!); 该Selenium试验不应该运行的是往往是EC2建立实例运行24/7,但对于像五分钟的身材,对于一个小时支付EC2的使用似乎有点多.

  • 合并可能存在的流程瓶颈.

  • "A"可以被移动吗?

致谢:此工作流程的部分内容受到Digg关于持续部署的精彩帖子的启发.上面的工作流程图灵感来自Android OS项目.

irc*_*ell 10

有多少人正在研究它?如果您只有10或20个开发人员,我不确定将这样精心设计的工作流程放到位.如果你管理500,肯定......

我的个人感觉是KISS.保持简单,愚蠢......你想要一个既有效又更重要的过程:简单.如果它很复杂,要么没有人会做正确的事,要么是在时间部分会滑落之后.如果你把它变得简单,它将成为第二天性,几周后没有人会质疑这个过程(好吧,无论如何它的语义)......

而另一种个人感觉总是运行你所有的UNIT测试.这样,您可以跳过流程图中的整个决策树.毕竟,什么更昂贵,几分钟的CPU时间,或大脑周期来理解部分测试传递和大规模测试失败之间的差异.请记住,失败是失败的,并且没有实际的理由认为代码应该显示给有可能使构建失败的审阅者.

现在,Selenium测试通常非常昂贵,所以我可能会同意将这些测试推迟到审核人批准之后.但是你需要考虑那个......

哦,如果我实施这个,我会在那里放一个正式的QC阶段.我希望人类测试人员能够查看正在进行的任何更改.是的,Selenium可以验证你所知道的事情,但只有人才能找到你没想到的事情.将他们的发现反馈到新的Selenium和Integration测试中,以防止回归...

  • 好吧,请记住,如果您从一开始就创建了流程,就可以按部分进行扩展.所以基本上你有一系列阶段(例如测试,验证,qc和部署).然后,当您需要添加流程时,将其添加到需要它的位置.如果您发现验证阶段花费了太多时间,或者工作不正常,那么您可以进行调整.您不需要有一个精心设计的系统来扩展它.您只需要一个人们相信的智能设计的简单系统.如果其他人没有承诺,那么无论工作流程有多好,它都不会发生...... (3认同)
  • 那么,恕我直言,你想要从pre-alpha一直到QC.否则你可能会错过一个架构错误,以后修复它会更加昂贵.让您的QC团队编写并维护Selenium测试.这样,编写它们符合他们的兴趣(因为它使他们的生活变得更容易),并且验证一个人是否失败(这不是误报)是他们的问题.我是"升级"的粉丝.您有Dev-> Review-> QC-> Production的地方.一级可以推到下一级,但没有进一步.所以,一旦它出手,他们就不用担心,除非他们回复(并且可以继续). (2认同)