php – 当使用composer / jenkins和wordpress与插件时,如何更新数据库?

我试图得到wordpress和由作曲家管理的所有插件.我遵循了以下说明:

https://roots.io/using-composer-with-wordpress/

和其他类似的说明在这里:

Composer => WordPress plugin workflow

但是我的问题是有时wordpress更新和/或插件更新会更改数据库.

在某些情况下,只需通过编辑器从repo下载文件就可以了,但是当更新对数据库进行重大更改时(即:WP 4.2到4.3)更改了永久链接,它就无法正常工作.

我需要的是一种强制更新来运行任何所需的数据库更改的方法.

关于我在这里处理什么的一点背景.我有150多个wordpress网站,有些运行不同的插件,有时,如果需要的话,还有不同版本的wordpress.

我是使用git ignore控制wp-content文件夹减去一堆文件的版本.

我目前有一个工作持续集成过程与框架网站(蛋糕,zend等)一起工作.这个过程使用git – >jenkins – >网络服务器.

我希望我的wordpress网站遵循类似的过程.

任何帮助,将不胜感激.谢谢.

最佳答案 所以我使用以下内容来创建我的解决方案

https://roots.io/using-composer-with-wordpress/

https://roots.io/wordpress-plugins-with-composer/

通过一些修改/ Jank,我将在下面详述

数据库更新我发现,只要你不运行需要更改数据库的两个单词按更新,你就可以了.

例子
如果您登录到wp admin并更新数据库,wordpress 4.2到4.3可以正常工作

但是,如果你更新4.2到4.3什么也不做,并且更新4.3到4.6你有时会遇到问题,我仍然没有解决

但是我确实有插件和wordpress自动更新

概观

我做了一个基础wordpress repo,所有新项目都是分开的

我的jenkins构建运行composer update或composer install,具体取决于vendor文件夹是否存在

我为所有“已批准”的插件制作了一个插件仓库,插件存储库只是当前插件的副本,必须包含

{
  "name": "YOURBITBUCKETGROUP/NAMEOFPLUGINEXACTLY",
  "type": "wordpress-plugin",
  "require": {
    "composer/installers": "v1.0.6"
  }
}

我将这些全部公开,以便任何网站都可以访问它们而没有任何信誉

此外,当更新插件时,只需创建一个名为“pluginversion”的分支

例1.2.3

这将允许您在需要时恢复到旧版本的插件

安装和更新wordpress和插件

从上面的链接我创建了一个看起来有点像这样的composer.json

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://wpackagist.org"
    },
    {
      "type": "git",
      "url": "https://bitbucket.org/YOUREPOLINEHERE/NAMEOFPLUGIN"
    }
    ],
  "type": "wordpress-core",
  "require": {
    "johnpbloch/wordpress-core-installer": "~0.1",
    "johnpbloch/wordpress": "4.*",
    "YOUREPOLINEHER/NAMEOFPLUGIN": "dev-master"
  },
  "extra": {
    "wordpress-install-dir": "wp"
  }
}

这将把网站更新为wordpress 4.X并在build上安装最新版本的插件

如果您想安装旧版本的插件,只需更改即可

"YOUREPOLINEHER/NAMEOFPLUGIN": "dev-master"

"YOUREPOLINEHER/NAMEOFPLUGIN": "1.2.3.x-dev"

这将在wp文件夹中的项目根目录中安装wp core,在wp-content文件夹中安装插件

您将需要使用此更改index.php

require( dirname( __FILE__ ) . '/wp-blog-header.php' );

require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );

此时,如果你按照上面的链接,你可能会认为你已经完成了,不完全是这样

问题和修复

这些是我的修复,他们可能不是完成这项工作的最佳方式,但他们为我工作任何改善这些的意见将不胜感激.

第一个问题是.gitignore

你会认为你可以忽略插件目录吗?这就产生了一个问题,即plugins目录不存在,并且空的index.php不存在

这个解决方案的第二个问题是uploads文件夹是版本化的,用户无法上传图像(将在构建时删除)

我的解决方案是不将插件添加到repo但允许添加index.php文件

我也从最终构建步骤中排除了.gitignore中的所有文件,因此它们不会被覆盖

我的.gitignore看起来像这样(你可能需要忽略其他文件)

/.htaccess
/wp/*
/vendor/*
/wp-content/mu-plugins/*
/wp-content/backup*/*
/wp-content/managewp/*
/wp-content/*.log
/wp-content/uploads/*
.DS_store

这会导致所有被忽略的文件被版本化,并允许最终用户更改上载文件夹

这也意味着您必须手动将uploads文件夹上传到服务器

希望这可以帮助你,如果你试图版本wordpress

编辑:同样在db wp_options网站中,url需要以/ wp为后缀

点赞