Comment mettre à jour la database en utilisant composer / jenkins et wordpress avec les plugins?

J'essaie d'get wordpress et tous les plugins gérés par le compositeur. J'ai suivi les instructions comprenant:

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

et d'autres instructions similaires trouvées ici:

Composer => Flux de travail du plugin WordPress

Cependant, mon problème est que parfois une mise à jour de wordpress et / ou une mise à jour de plugin change la database.

Dans certains cas, il suffit de download les files d'un repo via le composeur, mais lorsque la mise à jour apporte des modifications majeures à la database (WP 4.2 à 4.3) qui a changé les permaliens, cela ne fonctionne pas.

Ce dont j'ai besoin, c'est d'un moyen de forcer les mises à jour à exécuter les modifications de database nécessaires.

Un peu de context sur ce dont je parle ici. J'ai plus de 150 sites wordpress, certains exécutant des plugins différents et parfois, si nécessaire, une version différente de wordpress.

Je suis la version contrôlant le dossier wp-content less un tas de files avec git ignore.

J'ai actuellement un process d'continuous integration fonctionnant avec des sites frameworks (cake, zend, etc.). Ce process utilise git -> jenkins -> server web.

Je voudrais que mes sites wordpress suivent un process similaire.

Toute aide serait appréciée. Merci.

Solutions Collecting From Web of "Comment mettre à jour la database en utilisant composer / jenkins et wordpress avec les plugins?"

J'ai donc utilisé ce qui suit pour créer ma solution

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

et

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

Avec quelques modifications / Jank que je détaillerai ci-dessous

La mise à jour de la database J'ai trouvé que tant que vous n'exécutez pas deux mises à jour de presse de mot qui nécessitent des changements de database, tout ira bien.

Exemples wordpress 4.2 à 4.3 fonctionne si vous vous connectez à l'administrateur wp et mettre à jour la database

Si vous mettez à jour de 4.2 à 4.3 sans rien faire et mettez à jour de 4.3 à 4.6, vous avez parfois un problème, que je n'ai toujours pas résolu

Cependant, j'ai des plugins et WordPress mise à jour automatiquement

Aperçu

J'ai fait une base wordpress repo que tous les nouveaux projets sont bifurqués de

Ma build jenkins exécute la mise à jour du composeur ou l'installation du composeur selon si le dossier du fournisseur est présent

J'ai fait un plugin repo pour tous les plugins "approuvés" les plugins repos sont juste des copys du plugin actuel et doivent contenir

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

Je les ai tous rendus publics afin que tout site puisse y accéder sans creds

Aussi lors de la mise à jour du plugin, faites juste une twig appelée "pluginversion"

Exemple 1.2.3

Cela vous permettra de revenir à une ancienne version d'un plugin si nécessaire

Installation et mise à jour de wordpress et de plugins

A partir des liens ci-dessus, j'ai créé un compositeur.json qui ressemble un peu à ceci

 { "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" } } 

Cela mettra à jour le site à wordpress 4.X et installera la dernière version de votre plugin sur build

Si vous voulez installer une ancienne version du plugin, il vous suffit de changer

 "YOUREPOLINEHER/NAMEOFPLUGIN": "dev-master" 

à

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

Cela va installer wp core à la racine du projet dans le dossier wp et les plugins dans le dossier wp-content

Vous devrez modifier index.php avec cette

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

À

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

À ce stade, si vous avez suivi les liens ci-dessus, vous pourriez penser que vous avez terminé, et pas exactement

Problèmes et corrections

Ce sont mes solutions, ils ne sont probablement pas la meilleure façon de faire cela, mais ils travaillent pour moi toute consortingbution sur l'amélioration de ceux-ci serait appréciée.

Le premier numéro est .gitignore

Vous pensez que vous pouvez simplement ignorer le directory des plugins, n'est-ce pas? Eh bien, cela crée un problème que le directory plugins n'existe pas et le file index.php vide n'existe pas

Deuxième problème avec cette solution, le dossier de téléchargement est versionné et l'user ne peut pas download d'images (le sera supprimé lors de la construction)

Ma solution à cela est de ne pas append les plugins au repo mais d'autoriser l'ajout du file index.php

J'exclus également tous les files dans .gitignore de l'étape de construction finale afin qu'ils ne soient pas écrasés

mon .gitignore ressemble à ceci (vous devrez peut-être ignorer d'autres files)

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

Cela provoque la version de tous les files ignorés et permet au dossier de téléchargement d'être modifié par les users finaux

Cela signifie également que vous devez download manuellement le dossier de téléchargement sur le server

Espérons que cela vous aide si vous essayez de la version wordpress

EDIT: aussi dans l'URL du site wp_options db doit être suffixé avec / wp