Blog

Sep 28

Mettre à jour un projet avec Laravel Shift

J’ai testé aujourd’hui Laravel Shift, de Jason McCreary (aka @gonedark). J’ai un client sous Laravel 5.2 qui pourrait faire un usage intensif du nouveau système de notifications de Laravel 5.3 (que j’ai déjà implémenté sur Soumettre).

Shift est un service en ligne qui, a partir du code d’un projet stocké dans un repository Git (sont supportés : GitHub, BitBucket et GitLab), va créer une pull request qui rendra votre code compatible.

Le service ne permet pas de « sauter » une version : Si vous devez passer de la 5.1 à la 5.3, il faudra acheter deux upgrades (pour passer par la 5.2).

Pour la 5.2 vers 5.3, l’upgrade coûte 9 dollars. L’ayant fait une fois à la main, le process est relativement soft (à part pour les controllers Auth qui ont été scindés en 4 – alors c’est de la faute de mon code, qui était un peu faiblard, mais c’est resté assez sportif), et j’estime qu’il me faut environ 1 heure de boulot pour le faire calmement et proprement.

Premier souci : je me suis connecté via GitHub, et il m’a été impossible d’ajouter un autre fournisseur (dans mon cas, GitLab). J’ai été obligé de me déconnecter (… de vider les cookies pour le site, qui ne propose pas de lien de déconnexion) et d’en changer. Très franchement, j’ai été un peu refroidi par le côté trop austère du site : même pas un menu « User » !

Bref, trois clicks, un coup de carte bleue et deux minutes plus tard, la Pull Request est arrivée. Bonne surprise, plusieurs commits, commentés, dans une nouvelle branche de mon repository Git. La plupart récapitulent les upgrades faits au code, certains concernent de nouvelles bonnes pratiques mises en avant par le Framework.

En local, j’ai pu basculer sur la nouvelle branche, pour vérifier si tout avait bien fonctionné, avec un :
git fetch && git checkout laravel-5.3-shift && composer update

Paf, erreur, mais vite réglée: j’utilise dans ce projet le package Laravel DomPDFn de Barry Vd Heuvel (aka barryvdh) qui nécessite de changer de version (à la main dans mon fichier composer.json).

Shift a même pensé à ajouter le middleware SubstituteBindings au groupe « web », ce qui n’est pourtant pas précisé (à l’heure où j’écris) dans la doc de Laravel. L’absence de ce middleware empêche de framework d’utiliser les routes model bindings (ex: « /user/{user} ») et m’a fait transpirer un peu lors de ma première migration vers Laravel 5.3.

En tout, la migration de version m’aura pris 20 minutes, tests compris (unitaires et fonctionnels).

Les deux bémols, du coup, sont :

  • l’aspect « pas fini » du front : vraiment, j’aurais aimé avoir ne serait-ce qu’un historique de mes Shifts,
  • le fait de devoir donner accès à son code à un « inconnu ». Ce n’est pas dramatique : sans le fichier .env, Shift n’a jamais accès, notamment, aux bases de données du projet, et ne peut donc accéder à rien d’autre que mes petits modèles et contrôleurs.

En conclusion, je recommande Laravel Shift, surtout si vous avez plusieurs projets Laravel : faites le premier upgrade à la main pour saisir les subtilités, puis automatisez le process avec Shift. Ca vous fera gagner du temps tout en vous permettant de rattraper les éventuels soucis.

About The Author

1 Comment

  1. Chibani
    28 septembre 2016 at 15 h 27 min · Répondre

    Intéressant ce Laravel Shift (c’est d’ailleurs fou le nombre de micro-services tels que celui-ci dans l’écosystème Laravel…).

    Je note que tu génères des PDF avec Dom-PDF. En es-tu entièrement satisfait ?
    Sur un projet j’ai hésité avec Snappy (que j’ai utilisé pour le coup). T’as déjà comparé les 2 (j’aimerai bien ton retour si c’est le cas).

Leave a reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *