使用 PEAR、Phing 实现稳健的部署解决方案?

Using PEAR, Phing for a ROBUST deployment solution?

提问人:Eli 提问时间:1/29/2012 最后编辑:Lightness Races in OrbitEli 更新时间:1/30/2012 访问量:253

问:

我正在开始一个新项目,并希望为我的开发、持续集成和生产服务器提供一步到位的构建过程。

我希望该过程包含在我的源代码控制 (git/github) 中,并在我的三个服务器中的任何一个上稳健地运行,这些服务器非常相似,但项目根目录的路径不同。

我曾计划将通过 Pyrus 安装的 Phing、PHPDocumentor、PHP_CodeSniffer、PHPUnit 等使用到可以与项目一起部署的本地化 PEAR/PEAR2 安装中,这样我就可以在构建时对我的依赖项充满信心。

但是,我在设置此设置时遇到了任何问题。

这是我第一次尝试建立这样的构建系统,*nix 安装不是我的强项(尽管我最终总是会得到一个可靠的系统),所以这里的薄弱环节可能是我。然而,我遇到的很多问题似乎都来自PEAR。

例如,无论我通过 pyrus 安装得多么小心,所有东西最终都会出现路径问题。查看一些 PEAR 包,所有路径都是使用我在安装过程中使用的相对路径(./pear 等)进行硬编码(可能在运行时设置的)。这意味着我只能在安装期间从 pyrus 所在的文件夹中成功运行包,即使运行脚本放在 ./pear/bin 中并且我确实在安装过程中设置了 bin 文件夹。有时路径在内部与单个包冲突,因此它想从这里运行,但它想从那里管理配置......

PHPDocumentor 不能处理 PHP5.3(并且根本不会为我运行,也许是因为它有问题,也许是因为我安装错误?),所以我用 PHPDoctor 替换了它,它最初看起来还不错。

再举一个例子,设置后,Phing 会运行,但只是默默地死去。在深入研究并跟踪它之后,我发现 /io/PhingFile 第 70 行上的一个晦涩函数正在为所需参数获取 null,这会抛出 ConfigurationException,导致它静默死亡。

我有信心我能让这一切正常工作,但我不相信它会成为一个可部署的健壮系统,而且我真的不想调试、调整和维护一大堆自我修改的 PEAR 包,这些包必须在每次升级时重新调整。

所以,最后是问题=o)

有没有人使用这些应用程序有一个非常好的健壮构建系统?有什么诀窍吗?

还是每个人都有一个很好的健壮的构建系统,而这只是我对 *nix 安装和系统配置的天真,使这一切看起来像是 clusterphuckery 的双倍帮助?

有没有人对设置这样的系统以在多个服务器上工作有任何建议,或者我只是在开玩笑?也许我应该在项目根目录之外的系统上进行单独的安装,然后继续我的开发?

PHP 部署 持续集成 PEAR

评论

1赞 zerkms 1/29/2012
我认为不可能回答您的所有问题,但是我已经使用类似的软件集进行了设置。大约几个月前使用 PEAR 安装程序没有问题
0赞 Eli 1/29/2012
@zerkms - 那一定是我。我想我需要更深入地挖掘一下,看看它是怎么回事=o)

答:

1赞 cweiske 1/30/2012 #1

@work,我们在软件中使用了许多 PEAR 软件包,通过 Pyrus 将它们安装到本地目录中,并广泛使用 Phing 作为构建工具来运行测试和部署软件——在不同的 Linux 系统上,一些开发人员甚至在他们的 Windows 机器上运行它们。

它运行可靠,我们没有遇到您描述的问题。