0

我有 40 台服务器遍布全球。所有运行 centos 灯。
我正在使用 git,我希望对production分支的每个更改都部署到每台机器上。每台机器都有自己的config.php文件和很少的其他机器特定文件。

目前提交production使用 phing 运行 phpunit 测试、php-md、cpd 等来分支触发 hudson 构建任务。问题是,如何将它部署到我的每台机器上,最好在每台更新的服务器上运行 selenium 测试,在使它成为现实之前。

我研究了 capistrano,但我完全不想混合 ruby​​ 并在我的团队中添加这个依赖项。

您对 php 多服务器 CI 部署的建议?

变体 1

作为一个选项,在提交时运行 web-hook,phing在每台机器上启动构建,在构建配置中,我将指定要克隆的存储库、要保留的文件以及要替换的文件。
虽然如果我突然推送一个错误的build.xml文件,这会失败,这将阻止我在没有 40 次手动中断的情况下重建/恢复。+ 没有还原选项。

4

3 回答 3

1

最后得到了一点定制的git flow,其中一个post-receive钩子通过 CI 服务器触发了构建脚本。构建结果放置在最近与rsync所有这 40 台服务器同步的文件夹中。

每个服务器的 config.php 已留在 git repo 本身中
,并且 php 的auto_perpend_file指令在配置中设置为为当前服务器vhost加载正确的 文件。config.php

于 2012-11-15T08:34:58.283 回答
0

如果您当前正在使用 Phing,您可以简单地使用Jenkins每隔几分钟轮询您的存储库以获取更改,然后使用 Phing 开始部署。

我假设您的构建脚本正在使用正确的配置文件将文件上传到您的每个环境。

于 2012-11-09T16:43:24.637 回答
0

好吧,如果你想部署到服务器上,你可以使用 deployhq.com 之类的服务,或者如果你更喜欢自己做,可以看看deployogi。它基于 bash 和 deployogi-hooks,这些钩子可以是 phpscripts(或任何具有 755 模式的东西)。

于 2013-08-05T15:57:09.170 回答