Salut les @contributors !
Jâai mergĂ© la PR qui retire lâintĂ©gration Open-Zwave ( Remove Open-Zwave integration by Pierre-Gilles · Pull Request #1617 · GladysAssistant/Gladys · GitHub ), ce qui nous dĂ©bloque un paquet de chantiers
Ce que jâai en tĂȘte :
Passage Ă Node.js 16/18
Passage Ă la Webcrypto API pour Gladys Plus au lieu du polyfill quâon utilisait jusque-lĂ
Mise à jour des dépendances serveurs
Mise à jour des dépendances front
Mise Ă jour des Github Actions
Mise Ă jour de Cypress
Ce que jâai fais pour lâinstant :
1., 2., 3. (en partie) et 5. dans cette PR:
GladysAssistant:master
â GladysAssistant:upgrade-node-18
opened 06:07AM - 28 Nov 22 UTC
### Pull Request check-list
To ensure your Pull Request can be accepted as fa⊠st as possible, make sure to review and check all of these items:
- [x] Are tests passing? (`npm test` on both front/server)
- [x] Is the linter passing? (`npm run eslint` on both front/server)
- [x] Did you run prettier? (`npm run prettier` on both front/server)
- [x] If you are adding a new features/services, did you run integration comparator? (`npm run compare-translations` on front)
### Description of change
Upgrading to Node.js 18 LTS for the server & Node.js 16 LTS for the front
Pour lâinstant je passe Ă Node.js 18 sur le serveur, et Node.js 16 sur le front, car preact-cli tourne sous Webpack 4 qui nâest pas compatible avec Node.js 18 pour lâinstant.
@Pti_Nico Je me suis basé sur ton boulot sur ta PR ( ci: update CI deprecated actions by NickDub · Pull Request #1630 · GladysAssistant/Gladys · GitHub ), est-ce que tu pourrais à la limite faire une PR séparée pour Cypress ? (Limite attend que je merge ma PR Node 18)
Avant/AprĂšs
Je pensais pas que ça allait ĂȘtre aussi impressionnant, mais en gros voilĂ la vitesse dâexĂ©cutions des tests de PR:
Avant (exemple sur la derniĂšre PR)
Maintenant (Sur ma PR):
7 « J'aime »
Comme quoi garder les logiciels et technologies Ă jour câest important et ça sert Ă quelque chose
Jâavoue que câest assez fou comme gain de perf !
Plusieurs raisons Ă cette amĂ©lioration, ce nâest pas juste passer Ă Node.js 16/18 qui est la clĂ© :
Open-Zwave Ă©tait une librairie basĂ©e sur des binding C++ qui devait ĂȘtre buildĂ©e Ă chaque npm install + docker build dans chaque architecture. Retirer cette lib a pas mal contribuĂ©.
Avant Node.js 16, lâAPI Webcrypto nâĂ©tait pas disponible dans Node.js donc jâutilisais un polyfill qui devait ĂȘtre compilĂ© Ă chaque npm install + chaque docker build dans chaque architecture.
Dans le code du gateway, le changement ressemble à ça:
Ce qui retire node-webcrypto-ossl qui Ă©tait une tannĂ©e Ă compiler, et on passe par lâAPI native Node.js.
Potentiellement, ça améliore les performances et la stabilité de la partie Gladys Plus car on passe par une API native bétonnée et officielle.
On passe Ă une version plus rĂ©cente de sqlite3 qui a les bons bindings avec la Node-API , et qui est normalement prĂ©-compilĂ© pour chaque architecture, pareil on sâĂ©conomise un build par npm install + build docker par architecture.
En gros, lâĂ©cosystĂšme a pas mal Ă©voluĂ© et le fait de ne pas utiliser la derniĂšre version de Node nous empĂȘchait de passer Ă plein de nouvelles optimisations.
Lâautre avantage de tout ça, câest quâon va avoir un onboarding dĂ©veloppeur beaucoup plus facile, et donc ça retirera un frein au dĂ©veloppement de service Gladys.
On va pouvoir mettre à jour les tutos, et ça sera beaucoup plus simple
3 « J'aime »
Jâai une premiĂšre image Docker tournant sous Node.js 18:
gladysassistant/gladys:upgrade-node-18
Je suis preneur de retours
Edit: tag dev désormais:
Lâimage Docker sur le tag :dev est dĂ©sormais basĂ©e sur Node.js 18 LTS:
gladysassistant/gladys:dev
1 « J'aime »
Jâavoue que pour lâenvironnement de dev, le module a compiler zwave Ă©tait une tannĂ©e !
1 « J'aime »
Je vois ça dÚs que possible
1 « J'aime »
Pour info, jâai intĂ©grĂ© les diffĂ©rents retours fait sur la PR et mergĂ© la PR sur master pour que toutes les PR en cours puissent sâadapter et profiter des amĂ©liorations de vitesse de build !
Jâai mis Ă jour la documentation dĂ©veloppeur Linux/MacOS qui est maintenant bien plus claire Ă mon sens, fini open-zwave
Pour info, au final je suis passé à Node.js 18 sur le back et le front, donc pas de Node 16.
Pour la documentation Windows, est-ce que quelquâun pourrait faire une passe et vĂ©rifier que tout marche bien avec Node.js 18 LTS sur WSL et mettre Ă jour la documentation ? Merci !
Lâimage Docker sur le tag :dev
est désormais basée sur Node.js 18 LTS:
gladysassistant/gladys:dev
Sur Apple M1 Pro, câest vraiment impressionnant maintenant, les 1785 tests du backend passent en 1 minute Je gagne un temps fou de dev !
Et encore, on a de la marge dâamĂ©liorations, il y a 4-5 tests sur les services MQTT et Zigbee2mqtt qui prennent 10 secondes chacun, donc quasiment la moitiĂ© des tests est passĂ© sur ces intĂ©grations.
Jâai crĂ©Ă© des issues Github pour ces tests:
opened 07:12AM - 01 Dec 22 UTC
Service Development
As we are trying to improve CI speed, some single tests are taking 10 seconds an⊠d could maybe be improved?
**Example:**
â should saveConfiguration: init docker container no present (no user) (10008ms)
opened 07:15AM - 01 Dec 22 UTC
Service Development
â should saveConfiguration: init docker container no present (no user) (10007ms)
2 « J'aime »
@pierre-gilles jâai revu ma PR
1 « J'aime »
GĂ©nial ! Câest bon pour moi, mergĂ©
VonOx:
Câest fait
Efficace Câest mergĂ©, le nouveau tutoriel Windows est live sur le site:
1 « J'aime »