2009-08-13 109 views
10

我使用的是PHPUnderControl,它在Cruise Control上运行,用于持续集成和单元测试。我也设置了运行PHPDocumentor来为我生成phpdoc,它运行PHP代码嗅探器来为我执行编码标准。但是现在我想在同一台服务器(Ubuntu)上设置一些东西,以便更容易地部署到远程服务器。我已经设置好了,所以每次成功构建完成后,SVN Export都会从trunk中完成到服务器上的项目文件夹中的一个目录中。PHP构建系统

我一直在想写一个自定义的PHP脚本,它将SSH连接到配置的远程服务器,tarball最新的导出,复制它,解压缩和运行任何迁移。像这样的PHP脚本最初不应该太难,除非我最终需要扩展到多个服务器。我知道有像PhingFabric等系统。

我的问题是如果任何人有任何这些经验,并可以提供一些亲和骗局?我已经开始在我的服务器上设置Phing,并且将尝试使用Fabric,然后想知道是否有谁更广泛地使用它们,或者不得不扩展它们,可以提供一些反馈。

回答

8

我已经使用Capistrano与PHP(尽管它更像是一个Rails-y的东西,因为它是用Ruby编写的)。

它的使用非常简单,但是我说它没有必要使用它。尽管我们部署到各种不同的分段/生产服务器,并且多阶段扩展在这些场景中非常有用。

然而像大多数Ruby一样,如果你是Capistrano的新手,并试图做一些棘手的事情,会有很多钩子和“魔法”,这些钩子和“魔法”会让人困惑。

至于它如何与其他部署工具进行比较,我无法评论。我知道我们曾经使用过Phing,但我不确定我们为什么改用Capistrano。

+0

我喜欢卡皮斯特拉诺。 +1 – 2009-08-18 23:45:29

0

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

1

我们使用phing,它派上用场。我们不使用它来进行包装,但它不应该太难以让它做你正在寻找的东西。我们主要将其用于清除缓存,开发站点和其他任务以帮助开发等常见任务。它是一个很大的帮助,从我可以收集的东西看来,它似乎是一个蚂蚁克隆,尽管它可能没有蚂蚁所具有的所有功能。

0

我已经写了我自己的rsync工具,因为我工作的第三世界国家的一个非常糟糕的互联网连接,并有各种故障和挨饿连接,使rsync无法正常工作。

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

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

但首先 - 想想如果真的值得你这样做 - 如果你只更新每一个季度,那么纸上的简单清单就足够了。

2

如果你喜欢Capistrano,但希望它有点PHP'ish,检查出Fredistrano。我写了一个自动编译(SVN导出,Zend Guard编码等)和部署系统使用Phing一次,发现相当的痛苦使用。每当我不得不写一份特别的任务时,我都觉得我必须跳过许多箍环才能让它工作。

所以,现在我只写了简单的bash脚本,它使用SVN签出,编码,在SVN中创建标签并通过rsync部署。这可能是低科技,而Phing可能有一些优越的特征,但至少它不会妨碍我。

2

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

http://bldr.io