PHP构建/集成工具:你使用它们吗?[已关闭]

2022-08-30 21:15:58

在阅读了 2008 年 11 月版的 php|architect 杂志上的“现代 PHP 工作流”文章,其中讨论了单元测试 (phpUnit)、构建工具 (Phing) 和持续集成 (Xinc),我受到启发,进一步了解了 PHP 的一些可用工具,尤其是 Phing。

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

您是否使用PHP代码的构建工具?您认为它们比直接从 Subversion 部署提供了哪些优势?我应该注意什么,或者我可能会面临什么陷阱?


答案 1

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

用蚂蚁/菲灵完成的事情:

  1. 从基本签出到特定语言,确保存在依赖关系(其他库,目录等)
  2. 如果你有它们,编译模板等
  3. 使目标数据库达到所需的版本,具体取决于签出的代码版本
  4. 运行单元测试等

答案 2

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

不幸的是,我在PHP领域没有看到很多好的替代方案,而且与其他语言不同,构建工具并不是必不可少的,也不是文化的一部分,所以另一个支持良好的选项的演变可能不会很快发生。

因此,我会坚持使用更接近PHP的选项,这些选项可以更积极地支持构建工具的文化。我通常使用GradleRake也做得很好,这取决于你想用哪种语言作弊(可能还有其他类似的选择)。如果您喜欢这种事情,您还应该权衡诸如Webdriver支持之类的东西。否则,使用PHP和/或BASH创建轻量级解决方案应该涵盖所有内容,同时保持透明度


推荐