Skip to content
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

Mettre à jour les dépendances (langage + librairies) #1336

Closed
thbar opened this issue Nov 2, 2020 · 8 comments
Closed

Mettre à jour les dépendances (langage + librairies) #1336

thbar opened this issue Nov 2, 2020 · 8 comments
Labels
dette technique Entretien & maintenance générale, nécessaire pour que le code reste de bonne qualité

Comments

@thbar
Copy link
Contributor

thbar commented Nov 2, 2020

En cherchant à faire tourner le projet transport-site en local, je me suis demandé quelles étaient les versions d'Elixir, Erlang et Node à utiliser pour être à l'identique du vrai site (production).

Après vérification auprès de l'équipe et dans le code, ces dépendances sont a priori installées en production à l'aide de ce Dockerfile, qui s'appuie sur une image Docker construite à partir de betagouv/transport:0.4.3, elle-même générée par cet autre Dockerfile.

On peut donc voir que les versions utilisées actuellement en production doivent être normalement les suivantes:

$ docker run -it betagouv/transport:0.4.3 /bin/bash

bash-4.4# node --version
v10.14.2

bash-4.4# elixir --version
Erlang/OTP 21 [erts-10.3.5.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]

Elixir 1.8.1 (compiled with Erlang/OTP 21)

Soit:

De la même façon, les librairies Elixir utilisées sont plus ou moins anciennes selon les cas (voir capture de mix hex.outdated ci-dessous, qui montre le décalage des versions), il va également être souhaitable de mettre à jour progressivement et régulièrement.

CleanShot 2020-11-02 at 17 55 08@2x

Légende: "A green version in latest means you have the latest version of a given package, a red version means there is a newer version available. Update possible indicates if your current requirement matches the latest version"

Être sur des versions trop anciennes finira par être pénalisant (ex: si nous avons l'obligation de mettre à jour soudainement une librairie, pour une raison ou une autre, comme le traitement d'une incompatibilité à un moment, la charge de travail pourrait s'avérer importante, et bloquer le travail).

C'est pour cela qu'il est important de graduellement mettre à jour les dépendances (initialement pour rattraper le retard, puis de façon régulière par la suite).

Pour être fait sereinement, ce travail devra s'appuyer sur un outil de couverture de tests, et potentiellement sur des ajouts de tests sur les parties trop fragiles s'il en existe.

Je crée ce ticket pour y faire référence par la suite, car il faudra plusieurs passes pour mettre à jour, on commencera petit !

@thbar
Copy link
Contributor Author

thbar commented Apr 23, 2021

Un bon paquet de PR faites aujourd'hui là dessus, il reste quelques gros morceaux à traiter, et je vais créer des tickets séparés.

@ryanzidago
Copy link
Contributor

ryanzidago commented May 1, 2021

@thbar Est-ce que tu connais Dependabot?

Cela permet de gérer quasi-automatiquement la mise à jour des dépendances en fonction du fichier mix.exs:

  • À chaque fois qu'une nouvelle version d'une dépendance sera publié, Dependabot va créer une branche.
  • Sur cette branche, la librairie sera mise à jour et la suite de tests tournera.
  • À vous de merger la PR ou non (si les tests n'ont pas passés par exemple)

C'est vraiment un gain de temps. En plus, on peut voir les changelogs des librairies directement via Dependabot.

Voici un exemple d'une PR par ici.

@thbar
Copy link
Contributor Author

thbar commented May 1, 2021

@ryanzidago oui je connais et je m'en sers sur d'autres projets. Pour l'instant j'ai préféré ne pas l'activer ici, car il y avait beaucoup de grosses mises à jour à faire, et des changements où des ajouts de tests sont nécessaires. On l'activera probablement dans le futur. Merci !

@thbar
Copy link
Contributor Author

thbar commented Aug 2, 2021

Voir #1720, à l'instant t il ne reste plus que 7 mises à jour un peu délicates à faire:

❯ mix hex.outdated | grep -v "Up-to-date"

11:45:04.573 [warn]  Only the most basic features will work. Please create /Users/thbar/git/transport/transport-site/config/dev.secret.exs based on config/dev.secret.template.exs for more advanced use.
Dependency           Current  Latest   Status               
ecto                 3.6.1    3.6.2    Update possible      
ecto_sql             3.6.1    3.6.2    Update possible      
ex_aws               2.1.8    2.2.3    Update possible      
oauth2               0.9.4    2.0.0    Update not possible  
open_api_spex        3.8.0    3.10.0   Update possible      
quantum              2.3.4    3.3.0    Update not possible  
timex                3.6.3    3.7.5    Update possible

Run `mix hex.outdated APP` to see requirements for a specific dependency.

To view the diffs in each available update, visit:
https://hex.pm/l/Kdqh4

On a les tickets associés suivants (en plus de #1691):

@fchabouis
Copy link
Contributor

Mise à jour de la situation actuelle :

mix hex.outdated | grep -v Up-to-date
Dependency           Current  Latest   Status               
castore              0.1.11   0.1.12   Update possible      
ecto                 3.6.1    3.7.1    Update not possible  
ecto_sql             3.6.1    3.7.0    Update not possible  
ex_aws               2.1.8    2.2.6    Update possible      
excoveralls          0.14.2   0.14.3   Update possible      
exvcr                0.13.0   0.13.2   Update possible      
finch                0.8.1    0.8.2    Update possible      
hackney              1.17.4   1.18.0   Update possible      
html_sanitize_ex     1.4.1    1.4.2    Update possible      
mint                 1.3.0    1.4.0    Update possible      
oauth2               0.9.4    2.0.0    Update not possible  
open_api_spex        3.8.0    3.10.0   Update possible      
phoenix              1.5.9    1.6.0    Update not possible  
phoenix_ecto         4.3.0    4.4.0    Update possible      
phoenix_html         2.14.3   3.0.4    Update not possible  
phoenix_live_view    0.15.7   0.16.4   Update not possible  
plug_cowboy          2.5.1    2.5.2    Update possible      
postgrex             0.15.10  0.15.11  Update possible      
quantum              2.3.4    3.4.0    Update not possible  
sentry               8.0.5    8.0.6    Update possible      
sweet_xml            0.7.0    0.7.1    Update possible      
timex                3.6.3    3.7.6    Update possible      
typed_ecto_schema    0.2.0    0.3.0    Update possible

@fchabouis
Copy link
Contributor

je me frotte à la mise à jour de Ecto...

@fchabouis
Copy link
Contributor

maj :

mix hex.outdated | grep Update
earmark              1.4.15   1.4.16   Update possible      
ex_aws               2.1.8    2.2.6    Update possible      
phoenix              1.5.9    1.6.2    Update not possible  
phoenix_html         2.14.3   3.0.4    Update not possible  
phoenix_live_view    0.15.7   0.16.4   Update not possible  
timex                3.6.3    3.7.6    Update possible 

@thbar
Copy link
Contributor Author

thbar commented Jan 17, 2022

On a un bon processus à présent ; pas complètement à jour mais je pense qu'on peut fermer ce ticket.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dette technique Entretien & maintenance générale, nécessaire pour que le code reste de bonne qualité
Projects
None yet
Development

No branches or pull requests

3 participants