有没有人有使用php / mysql进行开发/暂存/部署工作流?[已关闭]

2022-08-30 22:20:31

我正在考虑一个好的php / mysql Web开发工作流程。

有人有一些提示吗?


答案 1

以下是我们的工作:

  1. 每个人都在他们的分支中处理他们的项目(代码,测试等)
  2. 当一切看起来都很好时,它就会合并到Trunk中
  3. phpUnderControl重建主干,运行我们所有的phpUnit测试,构建文档,更新数据库等
  4. 如果所有这些都通过,我们将合并到Stable中
  5. Stable像Trunk一样完全重建
  6. Stable 手动提升到我们的生产服务器

我们有一些自定义脚本来处理我们的数据库升级和向生产环境的推送。对于我们的数据库,我们将所有增量保存在一个文件夹中,脚本根据可用的增量检查当前数据库级别,并在需要时应用它们。

为了提升到生产环境,我们还有另一个脚本,该脚本提取所有生产数据,然后运行 rsync 来推送更改。

您没有提到您对服务器的控制级别,但对于一般开发,整个过程是相同的。


答案 2

我认为每个人做的事情都略有不同,这取决于确切的应用。以下是我们的设置:

发布之前:

  • 每个人都承诺./trunk
  • 当我们想要滚动发布时,我们会将主干复制到 。/tags/yymmddhhiiss
  • 我们稳定标签。

稳定后,我们运行部署脚本:

  • 在生产服务器上,签出新标记。
  • 转储数据库。
  • 停止守护程序并关闭 Web 应用程序。
  • 将符号链接切换为指向新签出的标记。/current
  • 运行迁移脚本。
  • 重新启动守护程序和应用程序。

如果我们需要快速推送一个小的更改,我们会将其合并到当前标记,然后我们可以在服务器上运行一个更简单的修补程序过程:

  • 停止守护程序并关闭 Web 应用程序。
  • svn update
  • 重新启动守护程序和应用程序。

请注意,某些工具旨在构建/自动化流程。Phing就是其中之一,Symfony有自己的批处理系统,这曾经是一个名为pake的独立项目。似乎这还不够,Zend Framework即将创建自己的变体。这一切都有点混乱,但Phing可能是使用最广泛的。你也可以使用非php特定的东西,比如AntCapistrano。我们只使用shell脚本,这基本上满足了相同的需求。

我们还有一个连续的构建运行,它从主干中签出并运行所有测试。目前,我们只有一个基本的shell脚本集合来做这件事,但我们正在考虑切换到PhpUnderControlxinc

迁移步骤也许值得一点解释。这些包含对数据库的更改,以及必须为新版本运行的其他任务。我们的迁移目前有点简单;我们只需有一个包含一堆脚本的文件夹,在迁移过程中,这些脚本将按顺序运行。我们跟踪已运行哪些更改的方法是在创建新标记后立即清空文件夹。但是,使用数据库来记录已运行的更改可能会更明智。我们正在考虑为此目的采用类似ruckusing的东西。.php.sqlmigrations


推荐