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

Jim*_*ran 19 php phing continuous-integration xinc build

在阅读了2008年11月版的php | architect杂志上讨论单元测试(phpUnit),构建工具(Phing)和持续集成(Xinc)的"现代PHP工作流程"文章之后,我激发了更多关于一些适用于PHP的工具,尤其是Phing.

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

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

Jil*_*les 7

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

使用Ant/Phing完成的事情:

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


Mat*_*ple 7

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

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

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