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.
