我有40台服务器遍布全球。所有运行的centos灯。
我正在使用git,我希望将production
分支的每个更改部署到每台机器上。每台机器都有自己的config.php
和其他一些机器特定的文件。
目前提交production
分支触发hudson构建任务,运行phpunit测试,php-md,cpd等。问题是,如何将它部署到我的每台机器上,
优选地,在每个更新的服务器上进行运行的硒测试,然后使其生效。
我已经调查了capistrano,但我完全不想混合ruby并在我的团队中添加这些依赖项。
您对php多服务器CI部署的建议?
作为一个选项,在提交时运行web-hook,在每台机器上启动phing
build,
在构建配置中,我将指定要克隆的repo,要在哪里留下哪些文件以及要替换哪些文件
虽然如果我突然推出一个有问题的build.xml
文件会导致我无法在没有40次手动中断的情况下重建/恢复文件,这会失败。 +没有还原选项。
答案 0 :(得分:1)
结束了一点自定义git flow,其中post-receive
挂钩通过CI服务器触发构建脚本。构建结果放在最近与rsync
同步到所有这40台服务器的文件夹中。
每个服务器的config.php都留在git repo本身中
并在auto_perpend_file
配置中设置了php的vhost
指令以加载正确的
当前服务器的config.php
文件。
答案 1 :(得分:0)
如果您当前正在使用Phing,则只需使用Jenkins每隔几分钟轮询一次存储库以进行更改,然后使用Phing开始部署。
我假设你的构建脚本正在使用正确的配置文件将文件上传到你的每个环境。
答案 2 :(得分:0)
好吧,如果你想部署到服务器,你可以使用像deployhq.com这样的服务,或者如果你愿意自己这样做,请看deployogi。它基于bash和deployogi-hooks,这些钩子可以是phpscripts(或任何模式755)。