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

19
在阅读了2008年11月php|architect杂志上关于单元测试(phpUnit)、构建工具(Phing)和持续集成(Xinc)的“现代PHP工作流程”文章后,我对PHP可用的一些工具产生了浓厚兴趣,特别是Phing。
过去,我通常通过在生产服务器上运行现场作为svn工作副本并简单地在生产环境中运行“svn update”来处理部署到生产服务器的问题。
您是否使用PHP代码的构建工具?您认为它们相比直接从svn部署有什么优势?我应该注意什么,或者可能会遇到什么问题?

1
php | architect杂志的链接坏了 :( - AntonioCS
@AntonioCS 看起来自我发布问题10个月以来已经有所改变...现在已经修复。 - Jim OHalloran
@LittleBobbyTables、Michael Berkowski、Rob、CL.、Linus Kleen:8K 次浏览 + 17 票不构成建设性意见? - Yousha Aleayoub
4个回答

7
我曾经使用过Phing和Ant,但更喜欢后者。我最初选择Phing是因为它是用PHP编写的,但说实话,它不如Ant成熟。最终,拥有一个成熟的构建系统和庞大的社区价值更高。
使用Ant/Phing完成的任务:
  1. 从基本检查中选择特定语言,确保存在依赖项(其他库、目录等)
  2. 如果有,编译模板等
  3. 将目标数据库升级到所需版本,具体取决于已检出的代码版本
  4. 运行单元测试等

Phing.ant本身是否原生处理数据库迁移,还是与外部工具集成? - Jim OHalloran
通常是一个外部工具。(实际上取决于你所说的“迁移”是什么意思)。 - Jilles

7
我看到 Phing 的一个大问题是它创建了一个不必要的间接层。PHP 是一种脚本语言,因此可以直接运行。Phing 使用 XML 配置与该语言不兼容: 它提供了更可读的声明性配置,但代价是牺牲了语言的任何灵活性。对于 Ant (启发这条路线的工具) 来说,这是有意义的,因为 Java 没有那么多的灵活性,因为它不够动态并需要编译。
不幸的是,在 PHP 领域中我没有看到很多好的替代方案,而且与其他语言不同,构建工具并不是非常重要或文化的一部分,因此另一个得到良好支持的选项的演变可能不会很快发生。
因此,我会坚持使用更接近于 PHP 可以从更积极支持构建工具的文化中做出的选择。我通常使用 GradleRake 也可以根据你想欺骗的语言做得很好(也许还有其他类似的选择)。如果你喜欢这种类型的东西,你还应该权衡 Webdriver 支持。否则,使用 PHP 和/或 BASH 创建一个轻量级解决方案应该可以涵盖所有内容,同时保持透明度。

2
我看了一下Phing,它看起来非常棒。对于我正在工作的项目,我实际上正在使用Apache's Ant。我用它来完成以下几件事:
  1. 合并和压缩JavaScript和CSS(使用YUI Compressor进行压缩)
  2. 用生产配置文件替换标准配置文件(例如将config.php.production重命名为config.php)
  3. 删除不需要的文件(例如ant构建文件build.xml)
我认为Phing值得关注,因为它是本地PHP,这可能很好。此外,如果您要做的不仅仅是复制/移动文件,请注意在转移到生产环境时可能会出现性能问题。我曾经遇到过一个问题,即YUI压缩程序在我的本地机器上运行良好,但在相对较小的VPS上速度非常慢。

我认为“用PHP实现”这个论点有点被高估了。这也是我们最初选择Phing的确切原因,但经过3年,我们从未对Phing核心进行任何更改。另一方面,Ant更加成熟/拥有更大的社区,并且如果需要,可以很好地与PHP脚本集成。 - Jilles
4
请记住,对于我们中的一些人来说,重要的是依赖关系而不是可修改性。我们只是不想在其他地方没有使用Java的情况下安装所有这些Java东西。 - ssokolow

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接