PHP构建系统

11

我正在使用PHPUnderControl来进行持续集成和单元测试,它是基于Cruise Control的。我还设置了PHPDocumentor来为我生成phpdoc,并运行PHP Code Sniffer来强制执行编码标准。但现在我想在同一台服务器(Ubuntu)上设置一些东西,以便更轻松地部署到远程服务器。我已经设置好了,在每次成功构建后,从主干中进行SVN导出,将其复制到服务器上项目文件夹中的一个目录中。

我一直在考虑编写一个小型的自定义PHP脚本,该脚本将SSH到配置的远程服务器,打包最新的导出文件,复制它,解压并运行任何迁移。像这样的PHP脚本最初不应该太难,除非我需要最终开始扩展到多个服务器。我知道有像PhingFabric和其他系统。

我的问题是,是否有人有这些系统的经验,并能提供一些优缺点?我已经在我的服务器上开始设置Phing,并将尝试使用Fabric进行下一个实验,但想知道是否有任何人曾经更广泛地使用过它们,或者必须对它们进行扩展,可以提供一些反馈。

6个回答

8
我曾将Capistrano与PHP一起使用(尽管它更像是Rails的东西,因为它是用Ruby编写的)。 使用起来非常简单,但是我没有必要进行大规模扩展。我们确实会部署到各种不同的演示/生产服务器,并且多阶段扩展在这些场景中非常有用。 然而,像大多数Ruby一样,如果您是Capistrano新手并尝试使用某些技巧,那么其中有很多钩子和“魔法”可能会让人感到困惑。 至于与其他部署工具相比如何,我无法评论。 我知道我们曾经使用Phing,但我不确定为什么要转向Capistrano。

2

最近出现了一种名为Bldr的新型构建工具。它使用Yaml配置,而不像大多数构建系统一样使用xml,并且具有高度的可扩展性。

http://bldr.io


2
如果你喜欢Capistrano,但希望它更像PHP风格,请查看Fredistrano
我曾经使用Phing编写了一个自动构建(SVN导出、Zend Guard编码等)和部署系统,但发现使用起来非常痛苦。每当我需要编写一个特殊任务时,我感觉必须跳过太多的环节才能让它正常工作。
所以,现在我只编写简单的bash脚本,使用SVN检出、编码、在SVN中创建标签并通过rsync进行部署。这可能是低技术含量的,而Phing可能具有一些优越的功能,但至少它不会妨碍我的工作。

1

我们使用phing,它非常方便。虽然我们不用它来打包,但是让它做你想要的事情应该不太难。我们主要用它来完成一些常见任务,例如清除缓存、构建开发站点以及其他有助于开发的任务。它帮了我们很大的忙,从我所了解的情况来看,它似乎是ant的克隆版,尽管它可能没有ant具备的所有功能。


0
如果我要实现这样的部署系统,我可能会选择与您上面概述的稍微不同的解决方案。我会将更新程序模块与其他代码一起打包,并在需要时(或者说在我“告诉”它这样做时)从我的服务器上拉取更新数据。这样,您就不必担心太多问题(您只需要在请求时通过http提供更新的代码,远程服务器处理其余部分)。这只是我的个人意见。

0

我写了一个类似rsync的工具,因为我在第三世界国家的网络环境非常糟糕,经常出现各种故障和断网情况,导致rsync无法正常工作。

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

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

但首先,请考虑是否真的值得花费时间来做这件事 - 如果您每季度只更新一次,则纸质简单清单就足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接