有人使用php/mysql进行开发/暂存/部署工作流程吗?

18

我正在考虑一种适用于 PHP/MySQL 网站开发的良好工作流程。

有没有人有什么建议?

2个回答

12
这是我们的操作步骤:
  1. 每个人都在自己的分支上工作(代码、测试等)
  2. 当一切看起来正常时,就将其合并到主干中
  3. phpUnderControl 重新构建主干,运行所有phpUnit 测试,构建文档,更新数据库等
  4. 如果一切顺利,我们就将其合并到稳定版本
  5. 稳定版本会像主干一样完全重建
  6. 稳定版本手动升级到我们的生产服务器上
我们有一些自定义脚本,用于处理数据库升级和推送到生产环境。对于数据库,我们将所有增量保存在一个文件夹中,脚本会检查当前数据库版本与可用增量的差异,并在需要时应用它们。
对于推广到生产环境,我们有另一个脚本,它会下载所有生产数据,然后运行rsync来推送更改。
您没有提及对服务器有多少控制权,但总体流程对于一般开发来说都是一样的。

非常感谢,我想我会尝试这个。phpUnderControl看起来非常有前途。 - Zoran Zaric

7
我认为每个人的操作略有不同,具体取决于应用程序。这是我们的设置:
发布之前: - 每个人都提交到 /trunk。 - 当我们想要发布时,将 trunk 复制到 /tags/yymmddhhiiss。 - 我们稳定标签。
一旦它稳定下来,我们运行部署脚本: - 在生产服务器上,检出新标签。 - 对数据库进行转储。 - 停止守护进程并关闭 Web 应用程序。 - 将符号链接 /current 指向新检出的标签。 - 运行迁移脚本。 - 重新启动守护进程和应用程序。
如果我们需要快速推送小的更改,我们将其合并到当前标签,然后可以在服务器上运行一个简单得多的热修复过程: - 停止守护进程并关闭 Web 应用程序。 - 运行 svn update。 - 重新启动守护进程和应用程序。
注意,有一些旨在结构化/自动化这些过程的工具。 Phing 是其中之一,Symfony 有自己的 批处理系统,曾经是一个独立的项目叫做 pake。如果这还不够,Zend Framework 即将创建 他们自己的变体。这真的有点混乱,但 Phing 可能是使用最广泛的。您也可以使用一些非特定于 PHP 的内容,例如 AntCapistrano。我们只使用 shell 脚本,基本上填补了同样的需求。
我们还有一个持续构建正在运行,它从主干检出并运行所有测试。目前我们只有一些基本的shell脚本来完成这项工作,但我们正在考虑转换到PhpUnderControlxinc
迁移步骤可能需要一些解释。这些包含对数据库的更改,以及必须为新版本运行的其他任务。我们的迁移目前有点简单; 我们只是有一个带有一堆.php.sql脚本的文件夹,在迁移期间,这些脚本按顺序运行。我们跟踪已运行的更改的方式是在制作新标记后立即清空migrations文件夹。不过使用数据库记录已运行的更改可能更明智。我们正在考虑采用类似ruckusing的东西来实现这个目的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接