通过Subversion部署网站内容

我们最近为我们的一个客户build立了一个新的开发基础架构和stream程。 这涉及到严格使用Subversion作为中央源代码库。 svn版本库在实时系统(/ branches / live /)上包含一个独立的代码分支。 存储库用于PHP内容(主要是Wordpress博客),但将来他们也可能持有其他的asp代码。 奖励积分的解决scheme,或多或less与Windows Server 2008 R2上的ASP代码相同的方式。

我们有两个服务器:一个分段系统和一个实时系统。 分期系统定期更新与中继线的代码。 实时系统是手动更新的。 服务器上的每个webroot都是trunk(分段系统)或live分支(live系统)的工作副本。

目前的工作stream程是:

在开发环境中进行开发 – >提交到主干 – >在分期系统上自动部署 – >在分期系统上testing – >合并到/ branches / live / – >在现场系统上手动部署。

这适用于单向更改,但每次更新wordpress(或插件)时都会遇到一些麻烦:WP更新过程将删除目录并解压缩新版本的存档。 这也删除了svnpipe理区域,这产生了很多错误。 我们可以用一个单一的全局pipe理区切换到SVN 1.7,但这只能解决部分问题。

最后,我们通过WP Gui完成了更新,恢复了svn admin区域,添加/删除了这些文件,并将更改提交给了trunk。 经过testing,我们必须在实时服务器上做基本相同的事情(除了提交之外,我们只是恢复了更改,并将新的文件从暂存系统合并到实时系统)。

我目前正在考虑以下几点:

  • 每个网站的htdocs是一个svn导出
  • 每个网站在htdocs目录旁都有一个svn工作副本
  • 一个脚本,在wp更新之后,从htdocs“重放”wc中的更改(rsync将已更改的文件同步到工作副本,rsync同步新文件, svn add它们,最后svn delete已删除的文件)。 该脚本将不得不排除一些文件(如wp-config.php,上传/临时目录等)。

有没有更好的方法来做到这一点? 不幸的是,由于时间和预算的限制,一个完整的CI服务器超出了范围。