-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TECH] Montée de version d'Ember pour Pix Certif de la 3.18 à 3.21 (PIX-1302) #1867
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
P-Jeremy
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
from
September 10, 2020 15:43
86e250b
to
077b8db
Compare
jbuget
changed the title
Upgrade Ember from 3.18 to 3.19
[TECH] Montée de version d'Ember pour Pix Certif de la 3.18 à 3.21
Sep 10, 2020
I'm deploying this PR to these urls:
Please check it out! |
P-Jeremy
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
from
September 11, 2020 12:06
76cf388
to
d503d01
Compare
jbuget
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
5 times, most recently
from
September 14, 2020 18:41
5f793bc
to
041f5f6
Compare
jbuget
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
from
September 15, 2020 07:26
041f5f6
to
5e2cd00
Compare
alexandrecoin
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
from
September 17, 2020 09:49
5e2cd00
to
6dc82a1
Compare
Revue FONC OK. Pour rappel, le contenu de la revue FONC pour PixCertif :
|
laura-bergoens
approved these changes
Sep 17, 2020
Anne-Gaelle-S
approved these changes
Sep 18, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Testé fonctionnellement ça a l'air good :))
laura-bergoens
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
from
September 23, 2020 07:43
6dc82a1
to
c631ea7
Compare
laura-bergoens
changed the title
[TECH] Montée de version d'Ember pour Pix Certif de la 3.18 à 3.21
[TECH] Montée de version d'Ember pour Pix Certif de la 3.18 à 3.21 (PIX-1302)
Sep 23, 2020
Issues encountered with ESLint no-mixin rule deactivated for Ember Simple Auth Ember getters replaced with ES5 getters Use new import format for Ember Data properties
- fix problem with deprecated autotracking for @sort computed property (see emberjs/ember.js#19101 - replace relative environment config file import (ex: '../config/environment') by namespace import (ex: 'pix-certif/config/environment') in order to simplify future upgrade - add ember-cli-update.json file in order to improve upgrade experience - fix problem with Ember Mirage request object that now use PascalCase HTTP headers instead of greek-case request headers - bump dependencies rspecting Ember CLI Update program
- bump ember-fontawesome from 0.2.1 to 0.2.2 - replace component use style from Mustache-format to AngleBracket-format ; ex: {{fa-icon 'plus'}} → <FaIcon 'plus'/> - fix deprecation warning for positionned param ; ex: <FaIcon 'plus'/> → <FaIcon @ICON='plus'/>
pix-service-auto-merge
force-pushed
the
tech-pix-certif-3-19-upgrade
branch
from
September 23, 2020 10:20
c631ea7
to
1ea3dfb
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🦄 Contexte & enjeu
La version d'Ember pour Pix Certif est la 3.18. La version actuelle d'Ember est la 3.21. La 3.22 est sur le point de sortir.
L'objet de cette PR est de se mettre à jour pour bénéficier des dernières nouveautés d'Ember, Ember Data et Ember CLI et se simplifier la vie pour les prochaines montées de version.
🤖 Méthodologie
Nous sommes passés par l'outil Node
ember-cli-update
, que nous avons installé en global (d'habitude, c'et plutôt le mal, mais en l'occurrence, là c'était très pratique).Nous avons tenté une première approche un peu "bourrine", en passant directement de la 3.18 à la 3.21. Nous avons rencontré pas mal de warnings, erreurs et tests en échec.
Nous avons alors décidé d'y aller de façon incrémentale : 3.18 → 3.19 → 3.20 → 3.21.
3.18 → 3.19
Problème de règle ESLint
ember/no-mixins
La montée de version d'Ember (ember-source + ember-data + ember-cli) s'accompagne, via
ember-cli-update
, de la montée de version d'ESLint et du plugin eslint-plugin-ember. Ce dernier contient de nouvelles règles, dontember/no-mixins
.Les seuls endroits dans le code de Pix Certif où nous utilisons encore des mixins sont dans la déclaration de routes, via ESA (Ember Simple Auth). Un patch existe à venir côté ESA (dans la v3.1.0-beta.0), mais il n'a pas encore été livré en production, en version finale.
Nous avons décidé, une fois n'est pas coutume, de désactiver la règle de linting, non pas de façon globale (on se respecte encore un petit peu), mais localement pour chaque route.
Nouveaux imports
@ember-data
Dans la continuité des nouveautés ESLint, il a fallu ajuster les imports de propriétés ou classes d'Ember Data pour utiliser le système de @namespace NPM.
Avant :
Après :
Utilisation des nouveaux getters ES6
Avant :
Après :
Ajout d'une fichier de config pour Ember CLI Update :
config/ember-cli-update.json
Ember CLI propose de nouvelles fonctionnalités d'update, via son sous-module ember-cli-update dont un système de blueprints.
Pour fonctionner, il y a besoin d'un fichier
config/ember-cli-update.json
, sur le modèle de schéma suivant.Le fichier ajouté par la PR est celui généré par la commande
ember-cli-update --to 3.19
, non modifié.3.19 → 3.20
Mirage & tests en échec
Fort de ce premier succès, nous avons entreprise la seconde montée de version. Nous avons été confrontée à une erreur qui s'est révélée assez compliquée, sur un grand nombre de tests (une soixantaine).
Nous nous sommes concentrés sur la résolution du test d'acceptance
authentication-test.js
. Sa résolution a permis la résolution de tous les autres tests.En effet, le problème venait de la configuration Mirage (
mirage/config.js
), et plus particulièrement de la ligne :Suite à la montée de version, les propriétés contenues dans l'objet
request.requestHeaders
sont nommées en PascalCase plutôt qu'en greek-case, peut-être pour se rapprocher des "standards du Web".Au passage, nous en avons profité pour monter de vesion :
ember-cli-mirage
: 1.1.6 → 1.1.8ember-fetch
: 7.0.1 → 8.0.2Avant :
Après :
Warning d'obsolescence à propos de l'évènement
@mouseleave
Avant :
Après :
Warning d'obsolescence à propos des paramètres ordonnés
Auparavant, dans Ember, il était possible de renseigner des paramètres d'un composant en fonction de l'ordre dans lequel on les déclarait dans le template. Désormais, cette fonctionnalité est déprécée et génère un warning.
Avant :
Après :
Le problème de la computed property
@sort
Alors que nous pensions que c'était tout bon pour la montée de version, un test Cypress s'est mis à échouer (merci la CI).
Scénario de reproduction
Après 3 jours de recherche et d'analyse, nous avons :
/sessions/list
, qui récupère le modèle depuis la route (model
= collection de Sessions Ember) avant de lui appliquer une transformation de tri sur la date et l'heure via la computed property@sort
model
maismodel.[]
(vu qu'il s'agit d'une collection d'objets Ember Data)Au final, nous ne sommes pas super satisfait de la solution et du manque de doc associé (jusqu'à quel point, ce qu'on a fait est viable et pérenne dans le temps ?).
Au passage, avec @jonathanperret, nous avons des doutes sur la qualité de l'implémentation existante. En l'état, on passe par le service
current-user
et par une sous-sous-propriété pour obtenir la liste des sessions. Ca nous paraît une façon très détournée de procédée. Elle a au moins le mérite de fonctionner.Il nous semble qu'on devrait se rapprocher d'un fonctionnement et d'une implémentation de Pix Orga, pour la gestion de la liste des Campagnes, avec du requêtage et de la pagination côté serveur.
Font Awesome et dépréciations en tout genre
Le passage de la v3.19 à la v3.20 a induit des avertissements liés à :
@ember/object/getWithDefault
Ces problèmes ont été résolus assez simplement en montant de version
ember-fontawesome
de la v0.2.1 à la v0.2.2 (laquelle embarque le correctif lié àgetWithDefault
) et en suivant les nouvelles règles d'Ember / Glimmer.Avant :
Après :
3.20 → 3.21
Pas de problème pour celle-ci. Ouf ! 🤤
💯 Pour tester
Il faut faire une passe complète sur Pix Certif 😬