PHP构建/集成工具:你使用它们吗? [关闭]
-
05-07-2019 - |
题
阅读“现代PHP工作流程”后 2008年11月版的php | architect杂志中的文章 讨论了单元测试( phpUnit ),构建工具( Phing )和持续集成( Xinc ) ,我启发了更多关于PHP的一些工具的知识,尤其是Phing。
过去,我经常通过将实时网站作为subversion工作副本运行并简单地运行“svn update”来处理生产服务器的部署。在生产盒上部署最新版本的代码。
您是否为PHP代码使用构建工具?您认为他们提供哪些优势而不是直接从subversion部署?我应该注意什么,或者我可能会遇到什么问题?
解决方案
我使用过Phing和Ant,后者更喜欢后者。我最初选择Phing是因为它是用PHP编写的,但说实话它并不像Ant那么成熟。最后,拥有一个拥有大型社区的成熟构建系统是值得的。
使用Ant / Phing完成的事情:
- 从基础结帐loalize到特定语言,确保存在依赖关系(其他库,目录等)
- 如果你有它们,编译模板等
- 根据签出的代码版本 将目标数据库升级到所需的版本
- 运行单元测试等 醇>
其他提示
我在Phing看到的一个大问题是它创建了一个不必要的间接层。 PHP是一种脚本语言,因此可以直接运行。 Phing使用XML配置不适合该语言:它确实提供了更易读的声明性配置,但代价是牺牲了语言的任何灵活性。使用Ant(这条路线的灵感)它是有道理的,因为Java没有那种灵活性,因为它不那么动态,需要编译。
不幸的是,我没有在PHP领域看到很多好的替代品,与其他语言不同,构建工具不是必不可少的,也不是文化的一部分,因此另一个支持良好的选项的发展可能不会很快发生。
因此,我坚持使用更接近PHP 可以从更积极支持构建工具的文化中做的选项。我通常使用 Gradle 。 Rake 也做得很好,具体取决于您想要作弊的语言(可能还有其他类似的选项) )。如果你涉及到那种类型的东西,你还应该权衡像Webdriver支持这样的东西。否则,使用PHP和/或BASH创建轻量级解决方案应涵盖所有内容,同时保持透明度
我看着Phing看起来非常棒。对于我正在研究的项目,我实际上正在使用 Apache的Ant 。我用它来做几件事:
- 结合并压缩Javascript和CSS(使用 YUI Compressor 完成压缩
- 用生产配置文件替换标准配置文件(例如,将config.php.production重命名为config.php)
- 删除不需要的文件(例如ant build file,build.xml) 醇>
我认为Phing值得关注Ant,因为它是原生PHP,可能很好。此外,如果您正在执行的操作不仅仅是复制/移动文件,请在迁移到生产环境时注意性能问题。我有一个问题,YUI压缩器在我的本地机器上运行正常,但在相对较小的VPS上,它非常慢。
在我正在进行的项目中,我们正在使用 phpUnderControl 来运行测试并获取什么东西坏了的快速反馈。我们计划使用它来运行其他测试,例如用 Watir 编写的测试。