【问题标题】:Do you use Phing? [closed]你用phing吗? [关闭]
【发布时间】:2010-09-07 09:21:42
【问题描述】:

有没有人使用Phing 来部署 PHP 应用程序,如果是,您如何使用它?我们目前有一个手写的“设置”脚本,每当我们部署项目的新实例时,我们都会运行该脚本。我们只需从 SVN 签出并运行它。它设置一些基本的配置变量,安装或重新加载数据库,并为站点实例生成一个 v-host。

我经常想也许我们应该使用Phing。我没怎么用过 ant,所以我不知道 Phing 应该做什么,而不是像我们的安装脚本那样编写从一个地方复制文件到另一个地方的脚本。您可以举例说明哪些更高级的用法可以帮助我理解为什么我们愿意或不愿意将 Phing 集成到我们的流程中?

【问题讨论】:

    标签: php deployment build-process build-automation phing


    【解决方案1】:

    来自 Federico Cargnelutti 的blog post

    功能包括文件转换(例如令牌 替换,XSLT 转换, Smarty 模板转换),文件 系统操作,交互式构建 支持、SQL 执行、CVS 操作,创建 PEAR 的工具 包,等等。

    当然,您可以为以上所有内容编写自定义脚本。但是,使用像 Phing 这样的专用构建工具会给您带来许多好处。您将使用经过验证的框架,因此不必担心设置“基础架构”,您可以专注于需要编写的代码。使用 Phing 还可以让新成员加入您的团队时更容易,如果他们以前使用过 Phing(或 Ant,这是 Phing 的基础),他们将能够了解正在发生的事情。

    【讨论】:

      【解决方案2】:

      对我来说,令人信服的答案是 phing 理解 PHP 类路径。蚂蚁没有。我不想让 ant build.xml 充满 exec 命令。我碰巧主要是一名 java 程序员,并且仍然使用 phing。这是完成这项工作的最佳工具。

      【讨论】:

      • UMMM... 要使用 ANT 执行 PHP 脚本,您所需要的只是顶部的“#!/usr/local/bin/php”(或您的 php 可执行文件的位置) PHP 脚本。然后,您只需从 ANT 调用脚本,就像对任何 linux 命令行操作一样。您可以通过这种方式解决任何自定义代码操作,包括来自 PHP 的 SQL 命令。
      【解决方案3】:

      我从 Ant 迁移到 Phing,“只是因为”它是 PHP。我用它从不同的颠覆存储库中导出,复制东西,构建不同的安装包等等,所有这些都有一个 20 行可重用的 xml 文件和一个包含项目特定内容的配置文件。我不可能用自定义脚本那么快地做到这一点。我还计划集成 api 文档生成和单元测试。喜欢它!

      【讨论】:

        【解决方案4】:

        我们使用 phing 来部署SemanticScuttle

        • 生成用于分发的 zip 存档
        • 创建PEAR
        • 上传zip到SourceForge
        • 用新的包文件更新PEAR channel
        • 将 reStructuredText 文档渲染成 html 文件并上传。目前使用exec,但我正在为它写separate task

        上传 zip 文件和频道是通过 rsync 完成的,遗憾的是,通过特殊任务 phing 不支持这一点 - 但使用 exec 始终是可能的并且效果很好。

        最后,它节省了大量时间,而且我们能够使用一个命令来测试、打包和部署我们的应用程序(这让我们在Joel Test 上获得了另一点)。我不想没有它。

        请参阅build.xml code

        【讨论】:

          【解决方案5】:

          我认为没有任何令人信服的理由选择 phing。我的意思是,PHP 程序员是否应该“仅仅因为”用 PHP 编写 Eclipse 插件可能更容易尝试重写 Eclipse?我不这么认为。

          Ant 有更好的文档,包括一些不错的 o'reilly 书籍,并且它在 Java 世界中非常成熟,因此您可以避免 (1) “我们还没有将特性 X 复制到 phing”和 (2 ) phing 项目失败的风险。 Here's 一篇关于配置 PHPUnit 以使用 ant 和 Cruisecontrol 的文章:没那么难。您还可以免费获得 eclipse 集成。

          祝你好运!

          【讨论】:

          • 好吧,重写 Eclipse 可能不是最好的主意,在 PHP 中使用 Ant 端口确实是个好主意。原因很简单:自定义任务,可以用普通的旧 PHP 完成(不是每个人都足够了解 Java)。构建应用程序通常涉及需要自动化的自定义功能,并且能够使用您精通的语言来实现 - 嗯,对我来说,这可以被认为是一个很好的优势。附言如果您使用的是 Java,那么您可能应该看看 Maven :))
          • Ant 的文档并不比 Phing 的好。是的,Phing 的文档缺少更多示例,但 Ant 也有。
          • 您不必为了构建自定义任务而在 PHP 中重写 ANT。您需要的只是一个适配器任务或编译器,它允许您从 ANT 执行 PHP 脚本。
          猜你喜欢
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 2010-11-18
          • 2011-09-23
          • 2012-06-12
          • 2010-11-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多