Wordpress Git工作流程帮助


17

我正在寻找一个与Wordpress一起使用的精简工作流程构想。

  1. 想要在我自己的服务器上内部安装git环境,而不使用Github处理存储库。
  2. 在git分支创建后自动创建子域(development.domain.com,ryan.development.domain.com)-可能有一些shell脚本钩子非常适合此操作
  3. Phing PHP / Shell脚本db迁移的处理(类似http://interconnectit.com/products/search-and-replace-for-wordpress-databases/),以在推送时处理序列化数据库替换

操作可能如下所示:

  1. 获取当前最新的wordpress版本并将其分支,分支的名称将获得一个子域条目(branchdevelopment.domain.com)
  2. 子模块您想要的主题(如果可用)(我想为此创建自己的git repo,因为我使用论文,我希望有一个空白的论文git repo设置可从已创建的服务器上内部获取)
  3. 签出并进行更改,客户端审查,一旦推送到实时状态,数据库脚本便会自动将序列化的url值从localhost(或子域)更改为实时url

这可能吗?我听说Capistrano也很好用,但是不确定Capistrano的整体运作方式。

我在自己的服务器上运行了大约200个站点,并希望开始在强大的git工作流环境中实施这些站点,以便更好地简化我的工作。到目前为止,我基本上是下载该站点的映像并在本地进行处理,然后将更改上传回服务器。在这个时代,这非常繁琐。

是否有人对此类型的工作流程有任何解决方案/过去曾与之合作过?如果是这样,将不胜感激一些资源/答案。


3
为什么不使用Bitbucket,因为它们有免费的无限回购协议?
Brian Fegter 2013年

2
如果您签出github仓库,搜索替换具有cli版本,您可以使用它,尽管我无法评论如何获取各种URL和参数以传递给它
Tom J Nowell

Answers:


6

一般问题解答

Nr.1。想要在我自己的服务器上内部安装git环境,而不使用Github处理存储库。

我要做的第一件事是检查作曲家以及它如何与WordPress一起使用,这是Andrey“ @Rarst” Savchenko的项目

Nr.2。自动创建在混帐分支创建子域(development.example.comryan.development.example.com) -也许有些shell脚本挂机将是理想的这一点。

这超出了该站点的范围。在StackOverflow上寻求帮助,或在您的主机上询问。一些托管人不允许自己编辑这些条目。

Nr.3 Phing PHP / Shell脚本db迁移的处理(类似http://interconnectit.com/products/search-and-replace-for-wordpress-databases/),以在推送时处理序列化数据库替换

我将设置多站点/网络安装。这样可以轻松管理所有表,将用户保持在中央位置等。

WP Gear - Robert“ @Wyck” Ellison的项目-列出了其他构建脚本。包括由他自己编写的WordPhing到目前为止, @ TomJNowells /Interconnect.it 脚本不在该列表中。

回答操作题

Nr。1.获取最新的wordpress版本并将其分支出来,分支的名称会得到一个子域条目(branchdevelopment.domain.com)

不知道为什么要这样做:每个分支的子域。当您查看同步的WordPress GitHub存储库分支列表时,您会看到每个分支都被命名X.Y-branch。因此,您的子域将以命名3.6-branch。我不确定是否允许子域以数字开头(应该是,但请咨询您的托管人),然后出现一个问题,您会得到一个名为的子子域6-branch,该子域具有一个名为3另一个叫2。猜想在子域中配对 2版本和3版本分支不是您想要实现的。

简而言之:checkout 3.6-branch即使您需要切换分支。

Nr.2。子模块您想要的主题(如果可用)(我想为此创建自己的git repo,因为我使用论文,我希望有一个空白的论文git repo设置可从已创建的服务器上内部获取)

Thomas“ @toscho” Scholz已经编写了一个不错的插件,允许我们使用子域来处理WordPress目录外的主题。你可以找到这个答案,以及在这一个。自WP 3.6起,即使自动更新也适用于主题。

您只需在wp-config.php文件中设置以下常量,即可对MU插件和插件执行相同的操作:

define( 'WP_PLUGIN_DIR',   'path/to/your/plugins.dev/folder/plugins' );
define( 'WP_PLUGIN_URL',   'https://plugins.dev/plugins' );
define( 'WPMU_PLUGIN_DIR', 'path/to/your/plugins.dev/folder/mu-plugins' );
define( 'WPMU_PLUGIN_URL', 'https://plugins.dev/mu-plugins' );

现在,只需将所有插件和主题置于版本控制下,然后将其推送到服务器即可。您可以使用mu插件或激活网络的默认插件轻松使它们全部可用。

Nr.3签出并进行更改,客户端审查,一旦推送到活动状态,数据库脚本就会自动启动,将序列化的url值从localhost(或子域)更改为活动的url

如果Toms脚本/插件到目前为止对您没有帮助,则被告知他接受GitHub上的pull请求


2
在我参加此站点的2个月中,我了解到“我将设置多站点/网络安装”是您最喜欢的一句话:)
gmazzap

@GM hehe :)是的,是的。一般来说,我什至不理解为什么我们仍然只有一个站点。随着网络安装,您的主域名/网站实际上为您的单个站点安装完全一样。您将获得很多选择和可能性。
kaiser 2013年

一般来说,我同意。进行单个站点安装的原因有:1)服务器访问受限2)现有代码的大部分(插件,主题,摘要)无法正常工作或newtwork安装存在问题。因此,如果您自己/不能自己编写代码,并且实际上不需要网络,那么最好使用一次安装。
gmazzap

1
如果Toms脚本不起作用,则PHP用户区中有一个名为Serialized的全功能Serialized解析器。
hakre 2013年

@hakre一如既往:请编辑我的问题:)
kaiser

3

没有时间写一个完整的功能答案(我有点of脚),但无论如何可能值得分享(我可能会编辑它,因为我也计划在此发布博客):

这意味着您可以具有一些基于主干/版本分支的WP设置,可以完全破解包括。主题和插件。

由于这是一个独立的(本地)存储库,因此可以通过ssh将其推送到其他存储库,例如:

  • 它位于应该在(裸仓库)上部署站点的远程主机上。
  • 这具有使该主机上的另一个存储库实际上合并到您刚刚推送的更改中的钩子。

针对Web的Git工作流程(2008年11月; Joe Maller,作者)中对此进行了概述。

然后,如果您有一个配置切换器,wp-config.php根据其运行的系统来选择具体设置,则您甚至可以集中配置存储库中的所有主机(开发,实时,暂存,好友等)。

您只需在子树中获取并合并WP中的上游更改即可。

您只需更新并提交插件。

部署很简单$ git push remote

在git仓库,数据库和上载的文件的远程主机上运行每日备份,这很便宜,对开发人员友好且灵活。这对于单个开发人员设置以及小型团队来说都非常有效,因为每个人都可以从远程的裸露副本中检出。


有一些警告:


现在,使用您的清单和上面概述的设置:

1.想要在我自己的服务器上内部安装git环境,而不使用Github处理存储库。

Github仅在此处处理上游存储库(Wordpress),而不是您自己的。

2.在git分支创建后自动创建子域(development.domain.com,ryan.development.domain.com)-可能需要一些shell脚本钩子来实现。

概述的设置是一种模块化方法,每个站点一个仓库。它可以处理任意数量的开发主机,也可以在多站点安装中很好地处理多个域,但是在这种方法中,这可以视为一个wordpress设置。

3. Phing PHP / Shell脚本db迁移的处理(类似http://interconnectit.com/products/search-and-replace-for-wordpress-databases/),以在推送时处理序列化数据库替换

这里不需要这样做,因为仅代码处于版本控制之下,数据库在开发(,登台)和生产之间应该保持独立。

您可能正在寻找一个可以正确执行域迁移的安装脚本,但是即使使用了更好的代码(可用的)来处理序列化数据的搜索和替换,在这里的这种设置通常也没有必要,因为您只需将更改付诸实践即可。 ,对于测试用例,您可以在开发数据库中快速创建内容,这通常是最小的问题(根据我的实际经验,您可能会有所不同,但是我也建议您将有关数据库迁移的主题保留在以下问题上:在网站上拥有-但请询问他们)。

我在自己的服务器上运行了约200个站点,并希望开始将这些站点实施到强大的git工作流环境中,以便更好地简化工作。

我无法想象那些站点将在字符串git工作流环境下变成怎样。您在此处管理的配置脚本和配置数据也许会保留在git版本控制下。那可能是有道理的。否则,由于站点数量庞大,我认为将所有站点都保留在一个git repo中根本没有任何意义。也许甚至都不是其中之一,因为我上面概述的是针对您开发的站点(包括WP核心代码)的,而不仅仅是针对安装任务的。因此,您可能首先需要为自己创建这200个站点的小地图,以及它们如何彼此交互以及这些站点包含哪些软件包(WP核心,插件,主题)。第一件事可能是创建电子表格/矩阵并将所有网站放进去。

然后,您可以将其保存为CSV,将其置于版本控制下,并使部署脚本根据该文件执行其工作。

而且,如果我从自动化任务中学到了一些知识,请执行以下操作:遵循Unix的哲学,使用现有且运行良好的工具(最好花半天时间阅读一些命令,然后尝试寻找替代方法,因为对于大多数工作而言,问题是已解决),并专注于命令行工具。他们是最强大的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.