PHP构建/集成工具:你使用它们吗?

时间:2009-03-08 05:00:48

标签: php build continuous-integration phing xinc

阅读November 2008 edition of php|architect magazine中的“现代PHP工作流程”文章 讨论了单元测试(phpUnit),构建工具(Phing)和持续集成(Xinc),我鼓励学习更多关于PHP的一些工具,尤其是Phing。

过去我经常通过将实时站点作为subversion工作副本运行并在生产盒上运行“svn update”来部署最新版本的代码来处理生产服务器的部署。

您是否为PHP代码使用构建工具?您认为他们提供哪些优势而不是直接从subversion部署?我应该注意什么,或者我可能会遇到什么问题?

4 个答案:

答案 0 :(得分:7)

我使用过Phing和Ant,后者更喜欢后者。我最初选择Phing是因为它是用PHP编写的,但说实话它并不像Ant那么成熟。最后,拥有一个拥有大型社区的成熟构建系统是值得的。

使用Ant / Phing完成的事情:

  1. 从基础结帐loalize到特定语言,确保存在依赖关系(其他库,目录等)
  2. 如果你有它们,编译模板等
  3. 根据签出的代码版本
  4. 将目标数据库升级到所需的版本
  5. 运行单元测试等

答案 1 :(得分:7)

我在Phing看到的一个大问题是它创建了一个不必要的间接层。 PHP是一种脚本语言,因此可以直接运行。 Phing使用XML配置不适合该语言:它确实提供了更易读的声明性配置,但代价是牺牲了语言的任何灵活性。使用Ant(这条路线的灵感)它是有道理的,因为Java没有那种灵活性,因为它不那么动态,需要编译。

不幸的是,我没有在PHP空间中看到很多好的替代品,与其他语言不同,构建工具不是必不可少的,也不是文化的一部分,因此另一个支持良好的选项的发展可能不会很快发生。

因此,我坚持使用更接近PHP 可以从更积极支持构建工具的文化中做的选项。我通常使用GradleRake也可以做得很好,具体取决于您想要欺骗的语言(可能还有其他类似选项)。如果你涉及到那种类型的东西,你还应该权衡像Webdriver支持这样的东西。否则,使用PHP和/或BASH创建轻量级解决方案应涵盖所有内容,同时保持透明度

答案 2 :(得分:2)

我看着Phing看起来非常棒。对于我正在研究的项目,我实际上正在使用Apache's Ant。我用它来做几件事:

  1. 合并并压缩Javascript和CSS(使用YUI Compressor
  2. 完成压缩
  3. 用生产配置文件替换标准配置文件(例如,将config.php.production重命名为config.php)
  4. 删除不需要的文件(例如ant build file,build.xml)
  5. 我认为Phing值得关注Ant,因为它是原生PHP,可能很好。此外,如果您正在执行的操作不仅仅是复制/移动文件,请在迁移到生产环境时注意性能问题。我有一个问题,YUI压缩器在我的本地机器上运行正常,但在相对较小的VPS上,它非常慢。

答案 3 :(得分:2)

在我正在进行的项目中,我们正在使用phpUnderControl来运行测试,并在出现问题时获得快速反馈。我们计划使用它来运行其他测试,例如Watir中编写的一些测试。