我正在考虑一个很好的 php/mysql web 开发工作流程。
有人有一些提示吗?
这是我们所做的:
我们有一些自定义脚本来处理我们的数据库升级和我们对生产的推动。对于我们的数据库,我们将所有增量保存在一个文件夹中,脚本会根据可用增量检查当前数据库级别,并在需要时应用它们。
为了升级到生产,我们有另一个脚本,它会拉下所有生产数据,然后运行 rsync 来推送更改。
您没有提及您对服务器的控制级别,但总体开发过程与一般开发相同。
我认为每个人所做的这些事情都略有不同,具体取决于具体的应用。这是我们的设置:
发布前:
/trunk
。/tags/yymmddhhiiss
.稳定后,我们运行部署脚本:
/current
以指向新签出的标签。如果我们需要快速推送一个小的更改,我们将它合并到当前标签,然后我们可以在服务器上运行一个更简单的修补程序过程:
svn update
请注意,有些工具旨在构建/自动化这些流程。Phing就是其中之一,Symfony有自己的批处理系统,它曾经是一个名为pake的独立项目。好像这还不够,Zend Framework 即将创建自己的变体。这真的有点乱,但 Phing 可能是使用最广泛的。您还可以使用非 php 特定的东西,例如Ant或Capistrano。我们只是使用 shell 脚本,它基本上满足了同样的需求。
我们也有一个持续的构建运行,它从主干中检出并运行所有测试。目前我们只有一个基本的 shell 脚本集合,但我们正在考虑切换到PhpUnderControl或xinc。
迁移步骤也许值得解释一下。Theese 包含对数据库的更改,以及必须为新版本运行的其他任务。目前我们的迁移有点简单;我们只是有一个包含一堆.php
和.sql
脚本的文件夹,并且在迁移期间,这些是按顺序运行的。我们跟踪已运行哪些更改的方法是migrations
在创建新标签后立即清空文件夹。不过,使用数据库记录已运行的更改可能会更聪明。为此,我们考虑采用类似ruckusing的方法。