【问题标题】:auto deploy php to multiple machines with git使用 git 自动将 php 部署到多台机器
【发布时间】:2012-11-04 14:49:21
【问题描述】:

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

目前提交到production 分支触发 hudson 构建任务,phing 运行 phpunit 测试、php-md、cpd 等。问题是,如何将它部署到我的每台机器上, 最好在每台更新的服务器上运行硒测试,然后再使其生效。

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

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

变体 1

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

【问题讨论】:

    标签: php deployment


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您当前正在使用 Phing,您只需使用 Jenkins 每隔几分钟轮询一次您的存储库以进行更改,然后使用 Phing 开始部署。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-07
          • 2011-07-29
          相关资源
          最近更新 更多