PHP构建系统

PHP构建系统,php,build-process,build-automation,build-tools,Php,Build Process,Build Automation,Build Tools,我使用的是在巡航控制之上运行的,用于我的持续集成和单元测试。我还设置了运行PHPDocumentor为我生成phpdoc,并运行PHP代码嗅探器为我强制执行编码标准。但现在我想在同一台服务器(Ubuntu)上设置一些东西,以便更容易地部署到远程服务器。我已经安装了它,所以在每次成功构建之后,SVN导出都会从主干中导出到服务器上projects文件夹中的一个目录中 我一直在考虑编写一个小的定制PHP脚本,它将SSH连接到配置好的远程服务器,保存最新的导出,复制它,卸载并运行任何迁移。像这样的PHP

我使用的是在巡航控制之上运行的,用于我的持续集成和单元测试。我还设置了运行PHPDocumentor为我生成phpdoc,并运行PHP代码嗅探器为我强制执行编码标准。但现在我想在同一台服务器(Ubuntu)上设置一些东西,以便更容易地部署到远程服务器。我已经安装了它,所以在每次成功构建之后,SVN导出都会从主干中导出到服务器上projects文件夹中的一个目录中

我一直在考虑编写一个小的定制PHP脚本,它将SSH连接到配置好的远程服务器,保存最新的导出,复制它,卸载并运行任何迁移。像这样的PHP脚本一开始应该不会太难,除非我最终需要开始扩展到多个服务器。我知道有一些系统,比如,和其他系统


我的问题是,是否有人有这些方面的经验,可以提供一些赞成和反对意见?我已经开始在我的服务器上设置Phing,并将尝试Fabric next来使用它们,但我想知道是否有人更广泛地使用它们,或者必须扩展它们,可以提供一些反馈。

如果我要实现这样一个部署系统,我可能会选择与您上面概述的稍有不同的解决方案。我不会让代码在我的系统上本地运行,连接到远程服务器列表并在那里“工作”,而是将更新程序模块与其余代码打包,让它根据需要(或者更确切地说,当我“告诉”它这样做时)从我的服务器中提取更新数据。这样,您就不必为自己担心了(您只需要在收到请求时通过http提供更新的代码,其余的由远程服务器处理)。只有我的2美分。

我用过PHP(尽管它更像是用Ruby编写的Rails-y)

它的使用非常简单,但也就是说我不需要用它来扩展。不过,我们确实将其部署到各种不同的登台/生产服务器,而多阶段扩展在这些场景中非常有用

然而,和大多数Ruby一样,如果你是Capistrano的新手,试图用它做一些棘手的事情,那么有很多钩子和“魔法”会让你感到困惑


至于它与其他部署工具相比如何,我无法置评。我知道我们以前用过Phing,但我不确定我们为什么改用Capistrano。

我们用Phing,它已经派上了用场。我们不使用它的包装,但它应该不会太难,使它做什么,你正在寻找。我们主要将其用于常见任务,如清除缓存、构建开发站点以及其他辅助开发的任务。这帮了大忙,据我所知,这似乎是一只克隆蚂蚁,尽管它可能没有ant所拥有的所有功能。

我已经为此编写了自己的类似rsync的工具,因为我在第三世界的一个国家工作,互联网连接非常糟糕,并且有各种各样的故障和连接不足,rsync无法工作

在您的远程系统上,您至少应该在运行迁移之前编写一个执行备份的小脚本

更好的方法是在web主机系统上使用完全独立的镜像系统,并在迁移后包含一些小但基本的单元测试。然后进行根目录切换,将更新后的网站联机。这需要在迁移期间以只读模式运行一些交互式服务(不幸的是,这是一个很少有人实现的功能)


但首先——想想这样做是否真的值得——如果你每季度只更新一次,那么一份简单的纸质清单就足够了。

如果你喜欢Capistrano,但希望它更像PHP语言,请查看

我曾经使用Phing编写了一个自动化构建(SVN导出、Zend Guard编码等)和部署系统,发现使用起来相当麻烦。每当我必须写一个特别的任务时,我就觉得我必须跳转到很多圈中,才能让它工作


所以,这些天我只编写简单的bash脚本,通过SVN签出、编码、在SVN中创建标记以及通过rsync部署来进行构建。它可能是低技术的,Phing可能有一些优越的功能,但至少它不会妨碍我

有一个新的构建工具,叫做Bldr。它使用Yaml进行配置,而不是像大多数构建系统那样使用xml,并且具有高度的可扩展性