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

标签 php workflow continuous-integration hudson selenium-rc

我一直在开发一个工作流程来练习自动化程度最高的 continuous deployment PHP 项目的周期。我想要一些关于此工作流程中可能存在的流程或技术瓶颈的反馈、改进建议以及如何更好地自动化并提高团队易用性的想法。


核心组件:


编辑:我已更改工作流图形以考虑 ircmaxwell 的贡献,方法是:删除 PHPUnitSelenium RC 扩展和仅作为 QC 阶段的一部分运行这些测试;增加一个QC阶段;在代码审查之后但在合并之前移动 UI 测试;在 QC 阶段之后移动合并;合并后移动部署。

此工作流程图表描述了流程。接下来是我的问题/想法/疑虑。

Continuous Deployment Workflow

我的顾虑/想法/问题:

  • 使用这个系统的总体难度。

  • 时间投入。

  • 使用 Gerrit 的难度。

  • 使用Puppet的难度。

  • 稍后我们将在 Amazon EC2 实例上进行部署。如果我们现在要使用 Puppet 设置 Debian 软件包并部署到 Linode 切片,是否有可能在 Linode 要在 EC2 上中断?我们是否应该从一开始就在 EC2 上进行构建和部署?

  • 另一个问题是:EC2Puppet。我们也在考虑使用 Scalr 作为解决方案。仅仅为此避免 Puppet 的开销并改为投资 Scalr 是否有意义?我对成本有一个次要的(哈!)关注; Selenium 测试不应该经常运行 EC2 构建实例将 24/7 运行,但是对于像五分钟构建这样的东西,支付一小时的 EC2 使用费用似乎有点多。

  • 合并时可能存在流程瓶颈。

  • 可以移动“A”吗?

致谢:此工作流程的部分内容是 inspired by Digg's awesome post on continuous deployment .上面的工作流图是inspired by the Android OS Project .

最佳答案

有多少人在做这件事?如果您只有 10 或 20 名开发人员,我不确定将如此复杂的工作流程落实到位是否有意义。如果你管理 500,当然......

个人感觉是KISS。保持简单,愚蠢...您想要一个既高效又重要的过程:简单。如果它很复杂,要么没有人会把它做对,要么时间一长零件就会滑落。如果你让它变得简单,它将成为第二天性,几周后没有人会质疑这个过程(好吧,无论如何它的语义)...

另一种个人感觉是始终运行所有 UNIT 测试。这样,您就可以跳过流程图中的整个决策树。毕竟,更昂贵的是几分钟的 CPU 时间,或者大脑循环来理解部分测试通过和大量测试失败之间的区别。请记住,失败就是失败,没有实际理由将代码显示给有可能导致构建失败的审阅者。

现在,Selenium 测试通常非常昂贵,所以我可能同意推迟这些测试,直到审阅者批准。但是你需要考虑那个……

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

关于php - 帮助我改进我的持续部署工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3703373/

相关文章:

php - 如何检查在与 PHP 的连接中使用的是什么证书?

每隔一段时间调用一次 Python 函数

visual-studio-2010 - 将 VB.Net 2008 项目升级到 VS2010 时出现问题

build - 是否有任何免费/开源构建系统,您可以自愿将自己的计算机作为构建代理?

php - 在 SQL 查询中使用声明的 "AS"变量

PHP file_get_contents 使用变量

php - Symfony2 Doctrine2 - 根据原则 :mapping:import 从现有数据库生成一对多注释

Applescript:突出显示组中的最新文件

workflow - Windows工作流程: Starting a separate workflow from within a workflow

angular - 如何在 Jenkins 中对 Angular 进行代码质量分析?