我正在考虑php/mysql web开发的良好工作流程.
有人有提示吗?
这是我们做的:
每个人都在他们的分支中工作(代码,测试等)
当一切看起来都很好时,它会被合并到Trunk中
phpUnderControl重建Trunk,运行我们所有的phpUnit测试,构建文档,更新数据库等
如果一切都过去了,我们就会合并到Stable中
Stable像Trunk一样完全重建
将Stable手动提升到我们的生产服务器
我们有一些自定义脚本来处理我们的数据库升级和推送到生产.对于我们的数据库,我们将所有增量保存在单个文件夹中,脚本会根据可用的增量检查当前的数据库级别,并在需要时应用它们.
晋升为生产,我们有另一个脚本,拉低所有的生产数据,然后运行rsync的推涨的变化.
你不提你在服务器控制的什么水平,但整个过程将是总的发展一样.
我认为根据确切的应用,每个人都会略微不同.这是我们的设置:
发布之前:
每个人都承诺/trunk
.
当我们想要发布一个版本时,我们将主干复制到/tags/yymmddhhiiss
.
我们稳定标签.
一旦稳定,我们运行部署脚本:
在生产服务器上,签出新标记.
转储数据库.
停止守护程序并关闭Web应用程序.
切换符号链接/current
以指向新签出的标签.
运行迁移脚本.
重新启动守护程序和应用程序.
如果我们需要快速推出一个小的更改,我们将它合并到当前标记,然后我们可以在服务器上运行一个更简单的修补程序进程:
停止守护程序并关闭Web应用程序.
跑 svn update
重新启动守护程序和应用程序.
请注意,某些工具旨在构建/自动化theese进程.Phing是其中之一,Symfony拥有自己的批处理系统,曾经是一个名为pake的独立项目.而且好像这还不够,Zend Framework即将创建自己的变体.这真的有点混乱,但Phing可能是使用最广泛的.您还可以使用非特定于PHP的内容,例如Ant或Capistrano.我们只使用shell脚本,基本上满足了相同的需求.
我们还有一个连续的构建运行,它从主干检出并运行所有测试.目前我们只有一个基本的shell脚本集合,但我们正在考虑切换到PhpUnderControl或xinc.
该迁移的步骤也许值得说明一下.Theese包含对数据库的更改,以及必须为新版本运行的其他任务.我们的迁移目前有点简单; 我们只是有一堆的文件夹.php
,并.sql
在迁移过程中的脚本和,theese按顺序运行.我们跟踪已经运行了哪些更改的方法是migrations
在创建新标记后立即清空文件夹.使用数据库记录已经运行的更改可能更为明智.我们被认为是为了这个目的采用像ruckusing这样的东西.