阅读“现代PHP工作流程”后 2008年11月版的php | architect杂志中的文章 讨论了单元测试( phpUnit ),构建工具( Phing )和持续集成( Xinc ) ,我启发了更多关于PHP的一些工具的知识,尤其是Phing。

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

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

有帮助吗?

解决方案

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

使用Ant / Phing完成的事情:

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

其他提示

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

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

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

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

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

在我正在进行的项目中,我们正在使用 phpUnderControl 来运行测试并获取什么东西坏了的快速反馈。我们计划使用它来运行其他测试,例如用 Watir 编写的测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top