【问题标题】:Hudson and PHP project release managementHudson 和 PHP 项目发布管理
【发布时间】:2011-03-15 03:43:48
【问题描述】:

我想询问有关通过 Hudson CI 服务器对 PHP 项目进行发布管理的真实生活经验。

我们的项目分为子项目:前端、框架、库。一切都作为自己的项目存储在我们的 SVN 中。不同的前端可能依赖于不同版本的框架,而框架本身又依赖于不同版本的库。

到目前为止,我们都是手动进行版本管理的。我们有一个环境作为测试和生产,以避免发布项目的环境差异问题。我们用版本号标记 SVN 中的每个子项目,并检查所有在测试域下可访问的测试。一旦我们进行了测试并修复了错误,我们将 SVN 中所有内容的新版本标记为生产并重新链接生产域以指向新代码。这个手动过程有其明显的问题,我们无法保留它。

在我转向自动化解决方案的研究中,我已经安装了 Hudson 并为 PHP 项目(Phing、ppUnit 等)配置了它。我熟悉在 Phing 或 Ant 下编写构建脚本。我把设置 CI 环境和准备项目的所有可能的“基础”东西都写好了,然后就完成了。我没有找到一个发布管理的示例,类似于我们手动执行的操作,并考虑了我们拥有的所有依赖项。你能指出我正确的方向吗?

【问题讨论】:

  • 投票转到programmers.stackexchange.com

标签: php hudson release-management


【解决方案1】:

恐怕没有现成的这么复杂的东西。我们必须解决非常相似的问题,最终我们使用了您计划使用(或已经使用)的非常相似的配置。

我们有多个应用程序核心,然后在此基础上进行特定的客户端修改。全部存储在 SVN 中。此外,我们使用 svn:externals 将框架和其他 3rd 方库与应用程序链接。

所有都是使用 Phing 完成的,虽然我们花了一些时间,但 Phing 帮了很多忙,我真的可以推荐它。

使用 phing 自动获取客户端特定的插件。一切都可以通过构建属性进行配置。

对于数据库模式更新,我们对作为 Phing 一部分的 dbdeploy 非常满意。虽然我们不得不根据我们的需要稍微修改它。

此外,我们添加了对创建预配置自解压 Linux 安装程序的支持,因此创建可部署包的整个复杂过程包括调用一个 phing 目标并传递正确的构建属性文件。为了创建这些安装程序,我们使用这种简单的技术 (http://www.linuxjournal.com/node/1005818)。 再次使用 Phing,创建的包会自动上传到目标服务器,通过 SSH 执行以进行部署。

然后我们使用 Hudson 自动创建安装程序包(除了自动运行 phpunit 测试和 Selenium/Hmres 测试)并将它们存储在定义的位置/或作为工件。然后,我们的支持团队可以获取软件包并自行进行生产部署(我们的 QA/测试环境由 Hudson 自动更新)。

此外,代码会在必要时使用 ZendGuard 自动编码和许可。

上面的简要描述只是为了说明使用 Hudson、Phing、SVN 和 PHP 可以实现什么。对于这篇文章来说,完整的技术细节显然太长了,但我很乐意在其他地方详细说明。

【讨论】:

    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多