Hudson和PHP项目发布管理

时间:2010-07-13 06:00:09

标签: php hudson release-management

我想问一下关于Hudson CI服务器上PHP项目发布管理的真实生活经历。

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

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

根据我的研究转向自动化解决方案我已经安装了Hudson并为PHP项目配置了它(Phing,ppUnit等...)我熟悉在Phing或Ant下编写构建脚本。我重新设置CI环境和准备项目的所有可能的“基础”东西并完成了。我没有找到的是发布管理的一个例子,类似于我们手动考虑我们所有的依赖项。你能指点我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我担心没有这么复杂的东西随时可用。我们必须解决非常类似的问题,我们最终使用了您计划使用(或已经使用)的非常相似的配置。

我们有多个应用程序核心,然后是特定的客户端修改。全部存储在SVN中。另外,我们使用svn:externals将Framework和其他第三方库与应用程序链接起来。

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

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

对于数据库架构更新,我们对dbdeploy非常满意,dbdeploy是Phing的一部分。虽然我们必须根据我们的需要稍微修改它。

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

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

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

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