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

Migration de Phoenix 1.4.10 à 1.5.7 #1457

Merged
merged 49 commits into from
Feb 18, 2021
Merged

Migration de Phoenix 1.4.10 à 1.5.7 #1457

merged 49 commits into from
Feb 18, 2021

Conversation

thbar
Copy link
Contributor

@thbar thbar commented Jan 12, 2021

Cette PR met à jour de nombreux points:

  • Passage du framework web Phoenix de 1.4.10 (septembre 2019) à la 1.5.7 (dernière disponible, novembre 2020)
  • Adaptation du code en suivant le changelog
  • Débuggage d'une option deprecated (format_encoders) qui causait des erreurs dans toute l'application
  • Mise à jour d'une partie des librairies (donc hackney, qui est utilisé pour récupérer les données en HTTP via HTTPoison) - il faudra être vigilant dans les prochains jours

La build a du être améliorée au passage:

  • Ajout de Git dans l'image temporairement (on mettra le binaire directement dans l'image docker de base dans le futur)
  • Mise à jour du navigateur "headless" (via selenium/standalone-chrome) de la version 3.141.59 (novembre 2018) à la version 86 (la plus récente est 88 mais ne fonctionne pas, voir Echecs des tests navigateur #1504)
  • Configuration systématique de la taille écran utilisée pour avoir les mêmes résultats de test en local (Mac ou Linux) et sur le CI
  • Séparation du cache CircleCI en 2 étapes (compilation dev/test d'une part, et Dialyxir d'autre part), pour améliorer l'efficacité (ex: si la construction du PLT échoue, on gagne le temps de compilation)
  • Time out Dialixyr de 20 minutes si pas de sortie à l'écran (sans quoi la build échoue initialement, avant la mise en cache)
  • Mise à jour de Dialyxir
  • Configuration améliorée de Dialyxir pour que le répertoire de stockage des PLT soit explicite et facile à mettre en cache

Tâches

Finalisation

  • Corriger test_lint
  • Corriger les tests hound cassés Echecs des tests navigateur #1504
  • MAJ de toutes les librairies possibles (Ecto etc) on traitera séparément
  • Passage en revue changements hackney et timex on traitera séparément
  • Test d'import en local
  • Test LiveView en local
  • Mise à jour Dialyxir (voir changelog) pour essayer de corriger un peu le temps de build

Warnings et erreurs

  • Adapter strategy: :one_for_one (pas spécifique à cette upgrade ; ou bien je crée un ticket, ou je le traite) -> EDIT voir :simple_one_for_one strategy is deprecated, please use DynamicSupervisor instead #1500
  • The :pubsub key in your GBFS.Endpoint is deprecated.
  • The :pubsub key in your TransportWeb.Endpoint is deprecated.
  • ** (CompileError) test/transport_web/controllers/backoffice_controller_test.exs:31: function init_test_session/2 imported from both Plug.Test and Phoenix.ConnTest, call is ambiguous
  • ⚠️ Corriger la grosse régression liée à l'upgrade de html_sanitize_ex et/ou phoenix_html_sanitizer (je crois) - voir Mise à jour sanitisation HTML #1492 pour travail séparé
  • Corrections de tests exemple mix cmd --app transport mix test --color test/transport_web/controllers/page_controller_test.exs:9

Modifications importantes

Ajouts à faire ou étudier

thbar added 2 commits February 9, 2021 17:24
Many tests would previously fail with the following error:

```
function Phoenix.Template.HTML.encode_to_iodata!/1 is undefined (module Phoenix.Template.HTML is not available)
```

After a fair bit of digging, I found that the default config today is different:

https://github.com/jayjun/phoenix/blob/master/lib/phoenix/template.ex#L223-L225

`Phoenix.HTML.Engine` should be used instead of `Phoenix.Template.HTML`.

I am removing the entry completely since:
- `html` will be handled fine with the default configuration
- `json` will leverage `Phoenix.json_library`, which is configured just above
@@ -100,6 +115,10 @@ jobs:
- attach_workspace:
at: ~/transport

- run:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je dois mettre "git" car du coup ce n'est pas sauvé dans le workspace de travail (j'ai essayé mais j'ai eu un problème de droit). Il sera préférable de mettre "git" dans l'image de départ tout simplement, j'y reviendrai.

"credo": {:hex, :credo, "0.10.2", "03ad3a1eff79a16664ed42fc2975b5e5d0ce243d69318060c626c34720a49512", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "539596b6774069260d5938aa73042a2f5157e1c0215aa35f5a53d83889546d14"},
"crontab": {:hex, :crontab, "1.1.5", "2c9439506ceb0e9045de75879e994b88d6f0be88bfe017d58cb356c66c4a5482", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "be38e047e84bfcee40b60c365fe086dc8b3419efdf7baef9fcca6285bbcf9d00"},
"csv": {:hex, :csv, "2.1.1", "a4c1a7c30d2151b6e4976cb2f52c0a1d49ec965afb737ed84a684bc4284d1627", [:mix], [{:parallel_stream, "~> 1.0.4", [hex: :parallel_stream, repo: "hexpm", optional: false]}], "hexpm", "3ae8ec4e98a44850d494d8441c8896631c295b3541cac791e56ea0885ba7df3f"},
"db_connection": {:hex, :db_connection, "2.0.5", "ddb2ba6761a08b2bb9ca0e7d260e8f4dd39067426d835c24491a321b7f92a4da", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm", "ced0780bed50430f770b74fcde870c4a50c815124ecf9fee20d67a465966eb4f"},
"decimal": {:hex, :decimal, "1.9.0", "83e8daf59631d632b171faabafb4a9f4242c514b0a06ba3df493951c08f64d07", [:mix], [], "hexpm", "b1f2343568eed6928f3e751cf2dffde95bfaa19dd95d09e8a9ea92ccfd6f7d85"},
"dialyxir": {:hex, :dialyxir, "1.0.0-rc.7", "6287f8f2cb45df8584317a4be1075b8c9b8a69de8eeb82b4d9e6c761cf2664cd", [:mix], [{:erlex, ">= 0.2.5", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "506294d6c543e4e5282d4852aead19ace8a35bedeb043f9256a06a6336827122"},
"dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"},
"earmark": {:hex, :earmark, "1.3.1", "73812f447f7a42358d3ba79283cfa3075a7580a3a2ed457616d6517ac3738cb9", [:mix], [], "hexpm", "000aaeff08919e95e7aea13e4af7b2b9734577b3e6a7c50ee31ee88cab6ec4fb"},
"ecto": {:hex, :ecto, "3.1.7", "fa21d06ef56cdc2fdaa62574e8c3ba34a2751d44ea34c30bc65f0728421043e5", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "fd0f11a8454e490ae11b6f69aa1ed9e0352641242d014cc3d2f420d7743f6966"},
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne mets pas à jour les autres dépendances (ex: Ecto) pour ne pas faire trop de changements dans la PR, je traiterai après.

@thbar thbar marked this pull request as ready for review February 11, 2021 17:33
@thbar thbar added the dette technique Entretien & maintenance générale, nécessaire pour que le code reste de bonne qualité label Feb 18, 2021
@thbar thbar changed the title [WIP] Migration de Phoenix 1.4 à 1.5 Migration de Phoenix 1.4.10 (sept 2019) à 1.5.7 (nov 2020) Feb 18, 2021
@thbar thbar changed the title Migration de Phoenix 1.4.10 (sept 2019) à 1.5.7 (nov 2020) Migration de Phoenix 1.4.10 à 1.5.7 Feb 18, 2021
@thbar thbar requested a review from fchabouis February 18, 2021 09:33
@thbar
Copy link
Contributor Author

thbar commented Feb 18, 2021

Vu avec @fchabouis, je vais devoir déployer aujourd'hui en forçant sans review, mais je déploie sur prochainement d'abord.

@thbar
Copy link
Contributor Author

thbar commented Feb 18, 2021

Test concluant sur prochainement. Je merge.

@thbar thbar merged commit 54c6ee3 into master Feb 18, 2021
@thbar thbar deleted the upgrade-phoenix branch February 18, 2021 10:58
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

Successfully merging this pull request may close these issues.

2 participants