Migrer vers Symfony 4
Par Laïla ATRMOUH �@leiluspocus
1 sprint - 80% de story produit, 20% de story tech
‘’ Partagez plus
que des bureaux
B U R E A U X À P A R T A G E R
Les étapes d’une upgrade vers une version majeure
“On prendra une semaine de dev, ça peut se caser dans un sprint !”
B U R E A U X À P A R T A G E R
Injection de dépendances - Commande
Injection du service manuellement dans la configuration YAML
En savoir plus sur le concept de l’injection de dépendances et ses avantages: https://putaindecode.io/articles/injection-de-dependances-en-php/
B U R E A U X À P A R T A G E R
Injection de dépendances - Controller
Tout ça peut se faire dès maintenant sur vos projets Symfony !* 🎉
*Dès Symfony 2.8 je crois ?
B U R E A U X À P A R T A G E R
Tests à ré-adapter
Adapter les mocks au changement
B U R E A U X À P A R T A G E R
Première mise en prod de l’injection de dépendances partout
On est toujours sur Symfony 3.4
Mise en prod - DI
Février 2019
La PR de release DI
B U R E A U X À P A R T A G E R
Upgrade vers Symfony 4
Démarrage de l’étape 2 de la doc officielle
B U R E A U X À P A R T A G E R
Ré-écriture de bundles
Ces bundles n’étaient plus maintenus ⚰️
… et on ne l’a pas anticipé dans l’estimation 😭☠️
dmishh/settings-bundle | Pour la gestion de settings On en a fait un petit manager maison |
besimple/i18n-routing-bundle | L’internationalisation est désormais native à Symfony ! |
liuggio/excelbundle | Génération de fichiers Excel basé sur une dépendance dépréciée composer update > Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet instead. Utilisation de la bibliothèque ellumilel/php-excel-writer |
"sensio/distribution-bundle": "^5.0", | Gestion des annotations de routes, géré nativement par symfony/routing |
syslogic/doctrine-json-functions | Remplacé par "scienta/doctrine-json-functions" Classes à renommer |
B U R E A U X À P A R T A G E R
Ré-écriture de bundles
Vous allez probablement forcément y passer pour ces deux bundles
besimple/i18n-routing-bundle | L’internationalisation est désormais native à Symfony ! |
"sensio/distribution-bundle": "^5.0", 🧨 | Gestion des annotations de routes, géré nativement par symfony/routing |
B U R E A U X À P A R T A G E R
Problèmes avec Behat
behat/mink n’a pas de version stable pour Symfony 4
B U R E A U X À P A R T A G E R
Problèmes avec Behat
Adding lazy loading listeners after construction is not supported
Injection des services dans le constructeur plutôt que via des setter
B U R E A U X À P A R T A G E R
Un peu de ménage
B U R E A U X À P A R T A G E R
Puis … Vient la MEP !
B U R E A U X À P A R T A G E R
Source: https://symfony.com/doc/current/deployment/proxies.html
🧯Feux en production 🚒
Connexion OAuth cassée
B U R E A U X À P A R T A G E R
🧯Feux en production 🚒
B U R E A U X À P A R T A G E R
Début février
19 février
Mars
Chronologie
Environ deux semaines sur la correction de warnings, l’injection de dépendances
Tests globaux par notre PO
Uniquement l’injection de dépendances
Réécriture de bundles dépréciés, stabilisation
Premier commit sur la DI
Upgrade vers Symfony 4 local
Booking
Mise en production
B U R E A U X À P A R T A G E R
Chronologie
Avril
Juin
15 juillet
Vacances de Laïla 🇯🇵 puis Xavier 🇦🇱�Dépriorisation du projet jusqu’à juin
Merge et conflits 😭
🍾🍾🍾🍾
Edition d’offre �Paiement en ligne�Refonte des environnements�
Mise en production finale !
Reprise du projet
🚨
B U R E A U X À P A R T A G E R
Points positifs
On fait le bilan (calmement)
Points négatifs
B U R E A U X À P A R T A G E R
A plusieurs, c’est meilleur !
-
Nous n’avons mis que deux ressources sur le projet (1 PM/1 Dev)�Nous avons traité cette migration comme un “side-project”
Les dépriorisations ont mis ce projet en péril
Les leçons apprises
B U R E A U X À P A R T A G E R
Garde ça simple !
-
Pas besoin d’un bundle Excel qui gère des images quand on veut juste … �générer un csv en format xls �#truestory
Les leçons apprises
B U R E A U X À P A R T A G E R
Merci les tests !
-
Les tests automatisés (phpunit, behat) nous ont aidé à déceler des soucis
Les tests globaux sont pénibles à réaliser�
Next steps: Tests End-to-End (même si c’est douloureux à mettre en place)�
Penser à garder un environnement de test le plus ISO possible avec la prod (OAuth)
Les leçons apprises
B U R E A U X À P A R T A G E R
Pour migrer vers Symfony 4.3, il vous faudra :
Bref !
S’il n’y avait qu’une slide à retenir ...
B U R E A U X À P A R T A G E R
laila@bureauxapartager.com // @leiluspocus
Psst… on recrute !
Merci !
B U R E A U X À P A R T A G E R