大型实时站点的Git工作流?

时间:2014-06-03 作者:Edmund Heaphy

我正在工作的Wordpress网站有数千篇帖子,每小时更新一次,并且有几十个插件和黑客让它以它的方式工作。

有人能解释一下git工作流允许以下内容吗?

从本质上讲,我想获取当前存在的所有内容—所有Wordpress文件、帖子、插件等—并在本地进行处理。我想这包括复制数据库并在本地运行它。(我知道马克·贾奎斯的解决方案,但显然不能从他的Wordpress框架重新开始。)

我之所以想从同一个数据库和帖子库工作,有一些具体的原因,这是不幸的,但也是必要的。

然后,我想在本地环境中进行更改和测试,然后将其推送到实时服务器,以及我将在本地环境中使用的数据库。我将有一个团队,它可以使开发数据库与在实时数据库上创建的内容保持最新(因为我认为没有其他方法,对吧?)。我还假设,我必须手动将上载到live站点的媒体与本地设置中的媒体文件夹保持同步。

因此,在某一点上,我希望将我正在本地处理的内容推送到实时服务器。我假设我的git存储库中的所有内容(不同之处)都应该覆盖live server上的内容,我应该将开发/本地数据库内容上载到我的AWS帐户,然后将live wp配置文件指向该数据库。

我想得对吗?像《纽约时报》这样的大型网站在推送到实时服务器时,如何处理与内容管理系统冲突的数据库和其他问题?

还请注意,我们正在运行Wordpress 3.5,由于情况的特殊性,我们不可能升级。

1 个回复
SO网友:jasonp

(我意识到这个问题已经存在五年了,OP可能已经找到了解决方案。)

我在一个管理大型WordPress网站的团队工作。我们有数以万计的自定义帖子,每天要输入/编辑几十次甚至数百次数据。

实际上,我们对网站主题(大多数自定义开发都发生在这里)和我们编写的每个自定义插件使用git repos进行了一些细分。我们不对WP核心进行任何代码编辑,因此不需要对其进行版本控制。

我们对主题和插件都使用Git功能分支工作流。功能分支工作流有很多指南,但在非常基本的级别上,我们有一个主(生产)分支和一个开发(UAT/staging)分支。所有新特性/问题都从develop中分离出来,一旦完成,就会合并回develop中。每当我们想要发布任何新特性时,Develop都会合并到master中。(与此处显示的内容非常相似:https://nvie.com/posts/a-successful-git-branching-model/.)

我们使用GitHub进行代码审查(将功能分支推送到GitHub,然后向develop发出请求,在合并之前进行审查),并将其作为每个主题/插件的“真实来源”。

对于主题/插件的部署,我们使用WP Pusher 在我们的暂存服务器和生产服务器上。它直接与GitHub连接,您几乎可以立即部署任何分支。还有其他可行的命令行解决方案,例如。Deployer, 但对于WordPress来说,目前我真的看不到比WP Pusher更好的东西。

我们不在本地处理生产数据,而是使用大量虚拟数据进行测试。如果本地需要生产数据(例如调试一个罕见的问题),我们只需导出MySQL数据库并在本地导入。有很多方法可以做到这一点,所以我不会详细介绍。将本地编辑的数据库推回到服务器上是非常危险的。有太多的方法可以让这一切出错。我们的现场制作数据库始终是我们的真实来源。(只需确保您有一些自动DB备份系统。)

结束

相关推荐

从Git存储库更新WP主题

我有一个客户端的主题当前托管在github上。而不是进行git部署或使用Beanstalk部署之类的服务。我将推动在许多网站(准确地说是79个)相同的主题,并希望他们能够更新自己,就像一个可湿性粉剂回购托管的主题。Genesis框架的更新工作原理就是一个很好的例子。我见过有其他插件可以实现这一点,但我正在寻找一个更简单的解决方案(如果有任何方法可以将此功能保留在主题本身中的话)?