2010-07-13 77 views
2

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

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

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

根据我的研究转移到我已经安装了哈德森和配置它PHP项目(Phing,ppUnit,等...)我所熟悉的写作建立Phing或蚂蚁脚本下的自动化解决方案。我将所有可能的“基础”设置CI环境和准备项目并做到这一点。我没有发现的是一个发布管理的例子,类似于我们手动考虑我们所有的依赖关系。你能指点我一个正确的方向吗?

+0

投票转向程序员。stackexchange.com – Mchl 2011-02-02 11:00:17

回答

1

恐怕没有这么复杂的东西一应俱全。我们必须解决相当类似的问题,并且我们最终使用了您计划使用(或已经在使用)的非常类似的配置。

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

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

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

对于数据库架构更新,我们很高兴与dbdeploy这是Phing的一部分。虽然我们必须稍微修改它以满足我们的需求。

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

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

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

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