如何有效地修补在多个主机上运行的代码?

时间:2012-08-06 17:41:22

标签: php codeigniter deployment release-management

产品是一个不断发展的CMS,并且一直在推出新的功能补丁。该产品托管在多个服务器上,其中一些服务器我只拥有FTP凭据并可以访问数据库,而对于其他服务器我拥有完全的root访问权限。现在,只要测试后发布了一个新功能,我就必须手动ftp文件并在所有服务器上运行SQL查询。这非常耗时,容易出错且效率低下。如何使其更加强大,简化或自动化部分内容? CMS基于PHP,MySQL,JS,HTML和CSS。管理员部分对所有人来说都很常见。皮肤和一些自定义模块是为不同的客户开发的,我们更新的唯一部分是admin。

更新

为了管理我们使用GIT的代码,SQL不是这个GIT结构的一部分,我将与产品经理/所有者交谈以使其受版本控制。

2 个答案:

答案 0 :(得分:2)

这是解压缩代码的一个重要问题。

就个人而言,我有一个PHAR,在执行时会将代码提取到特定文件夹并执行所需的查询。

答案 1 :(得分:1)

我在几十台服务器上运行网络部署,每月处理数亿访问者。

SQL变更管理始终是一个野兽。你只希望自己在内部(我做了什么)或使用像EMS DB Comparer这样的东西。

要处理文件同步,您需要一些工具,这些工具都经过精心设计,可以协同工作,包括:

  1. 源代码版本控制(bzr,svn等),正确分支(稳定分支,dev分支,测试分支是必需的),
  2. 持续集成服务器,
  3. 每台服务器上的SFTP支持,
  4. 希望通过单元和综合测试来确定构建质量,
  5. 每台服务器上的Rsync,
  6. 构建脚本(我在Phing中执行这些操作),
  7. 部署脚本(也在Phing中),
  8. 知道如何。
  9. 一般过程大约需要20个小时才能彻底研究,大约需要40个小时才能完成。当我制定文档时,涉及40多个不同的步骤。创建SQL更改管理实用程序又耗时20-30小时。再加上10个小时的测试,你正在看一个100-120小时的项目,但是这个项目将在未来的拙劣部署中大大节省你的时间,同时减少部署时间到单击按钮所需的时间。

    这就是为什么我就建立整个过程进行咨询,通常需要大约5个小时才能在客户的网络上进行设置。