Vous êtes ici

Comment mettre à jour Drupal 8 avec Drush ?

Portrait de DrupalFacile
Soumis par DrupalFacile le mar, 10/11/2015 - 10:32

Il y a plusieurs méthodes pour mettre à jour Drupal (par exemple rsync ou via un patch file) mais la plus aisée est sans aucun doute via Drush qui vous permet en quelques secondes de mettre à jour aussi bien les modules que le cœur de Drupal 8.

La première chose à faire est de vous placer dans le docroot (la racine du site) Drupal 8 à mettre à jour. Ensuite, tapez :

$ drush core-status | grep 'Drupal version'
Drupal version    :  8.0.0-rc1

Cela vous permet d'obtenir la version courante du site et c'est ce qui va déterminer la suite des opérations. Maintenant, vous pouvez tester la commande suivante pour voir vers quelle version Drush voudra mettre à jour Drupal.

$ drush pm-update
Update information last refreshed: Tue, 11/10/2015 - 09:28
 Name                 Installed Version  Proposed version  Message          
 Drupal               8.0.0-rc1          8.0.0-rc3         Update available
 Honeypot (honeypot)  8.x-1.19-beta14    8.x-1.21          Update available

La commande pm-update permet de vérifier les mises à jour et optionnellement de les appliquer. Vous avez probablement observé que pm-update veut également mettre à jour le module honeypot. Il faut donc changer légèrement la commande :

$ drush pm-update drupal
Update information last refreshed: Tue, 11/10/2015 - 09:28
 Name    Installed Version  Proposed version  Message          
 Drupal  8.0.0-rc1          8.0.0-rc3         Update available

Passer l'argument drupal permet de restreindre la commande pm-update uniquement à Drupal core et pas aux modules contrib. On peut encore aller plus loin.

$ drush pm-update drupal-8.0.0-rc2
Update information last refreshed: Tue, 11/10/2015 - 10:19
 Name    Installed Version  Proposed version  Message                     
 Drupal  8.0.0-rc1          8.0.0-rc2         Specified version available

Passer la version exacte de Drupal permet de mettre à jour version par version plutôt que directement vers la dernière version. Quel est l'intérêt ? Simplement de pouvoir savoir si/quand une mise à jour introduit une régression au fonctionnement de votre site, que ce soit dans Drupal core ou un module contrib/custom. Ci-dessous, une séquence de mise à jour complète.

$ drush pm-update drupal-8.0.0-rc2
Update information last refreshed: Tue, 11/10/2015 - 10:26
 Name    Installed Version  Proposed version  Message                     
 Drupal  8.0.0-rc1          8.0.0-rc2         Specified version available 

Code updates will be made to drupal core.
WARNING:  Updating core will discard any modifications made to Drupal core files, most noteworthy among these are .htaccess and robots.txt.  If you have made any modifications to these files, please back them up before updating so that you can re-create your modifications in the updated version of the file.
Note: Updating core can potentially break your site. It is NOT recommended to update production sites without prior testing.

Do you really want to continue? (y/n): y
Project drupal was updated successfully. Installed version is now 8.0.0-rc2.
Backups were saved into the directory /home/drupalfacile/drush-backups/head/20151110092602/drupal.                            [ok]
No database updates required                                                                                                  [success]
Cache rebuild complete.                                                                                                       [ok]
Finished performing updates.                                                                                                  [ok]

On remarque donc que Drush gère le processus complet de mise à jour, tout en prenant le soin de sauvegarder tous les fichiers mis à jour (pensez néanmoins à bien sauvegarder les fichiers .htaccess et robots.txt qui seront écrasés par le processus de mise à jour. Autrement il faudra les récupérer dans la sauvegarde). Ce n'est pas tout. Drush va également effectuer toutes les mises à jour de base de données, s'il y en a, puis reconstruira le cache.

N'exécutez pas pm-update en production sans bien tester la mise à jour dans une environnement de test d'abord. La plupart du temps tout se passera bien mais il peut arriver dans la vie d'un projet web qu'une mise à jour casse quelque chose. L'idéal comme toujours est de bien sauvegarder non seulement le code, mais aussi la base de données et les fichiers du site.

Version: 
Drupal 8
Niveau: 
Débutant
Partager ce contenu