-
Notifications
You must be signed in to change notification settings - Fork 9
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
feat: add workflow to check version consistency #8
Conversation
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.
Je me suis permis de faire quelques remarques purement sur le code.
Sur les aspects fonctionnels, je pense que tu as répondu à l'oral sur les deux points ci-dessous, et je vais créer un ticket chantier-qualité pour la maj du pattern frictionless.
(remarques obsolètes :)
-
Je pense qu'il y a un risque d'erreur si la version n'est pas précédée de la lettre
v
. Le pattern n'est pas explicite à ce propos, et l'exemple donné dans le pattern utilise même"version": "1.0.1",
. * -
Est-ce que les champs
homepage
etversion
sont obligatoires dans les schémas ? Idem, comme c'est un pattern, je ne sais pas quelle est la politique schema.data.gouv
Merci pour cette review Pierre ! |
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.
Hello !
Merci pour la PR, le besoin de “vérifier que les liens qui contiennent une version cohérente” avant de générer le tag/la release est quelque chose qui mérite d’être creusé, comme en témoigne l’historique sur le schéma IRVE 🤣 (voir etalab/schema-irve#56).
Voici mes commentaires en première passe.
Lecture du code
En premier lieu j’ai ressenti le besoin de comprendre ce que faisait précisément la méthode def check
. Je comprends l’idée générale (car j’ai implémenté quelque chose d’un peu similaire), le côté arbre récursif etc.
➡️ une petite explication juste au dessus de la méthode aidera les utilisateurs
Test sur schema-irve
Pour voir si ça fonctionnait “pour nous”, j’ai été intégrer le test dans https://github.com/etalab/schema-irve en local.
Le premier retour concret est que l’implémentation actuelle ne supporte pas la fonction data package que nous utilisons (https://github.com/etalab/schema-irve/blob/master/datapackage.json).
Ça pourrait être adapté à peu de frais, toutefois l’usage de data packages est récent, je ne suis pas sûr que ça intéressa beaucoup de monde avant un moment.
J’ai modifié le code en local pour aller lire statique/schema-statique.json
par exemple, en changeant un peu les versions dans le JSON pour “créer des erreurs”, toutefois le code n’a pas remonté d’erreurs.
Donc je peux suggérer des tests en s’appuyant sur nos JSON ; je ne sais pas si le souci est dans nos JSON ou dans le test !
Packaging
Préoccupation plus long terme, si on devait à un moment utiliser cela de façon standardisée sur beaucoup de schémas, ça pourrait être une bonne idée de shipper plutôt une “GitHub action”, qu’on pourrait intégrer dans les workflows, pour faciliter l'intégration et la mise à jour.
On pourrait avoir des validations lancées “lors des releases”, pour bloquer une release si elle ne respecte pas les bonnes conditions, ce qui serait top.
Voilà c’est tout pour aujourd’hui, j’espère que ça te sera utile !
Merci pour ce retour Thibaut ! 🙏 Point par point :
|
Update : j'ai modifié le code pour prendre en compte les datapackages et j'ai initié une PR sur le repo template : datagouv/datapackage-template#1 (qui montre d'ailleurs une incohérence due à l'absence d'un |
@Pierlou merci ! J'ai bien noté, je testerai et je te ferai un retour global aussi. |
Comme nous sommes à l'origine du pattern et que nous avons l'opportunité de participer au groupe de travail pour la v2 de la spec, je dirais qu'on a tout intérêt à essayer de pousser un format unique avec le "v" ! (et donc garder le comportement actuel de ton script) |
En réalité ici il s'agit uniquement de la détection des versions dans le schéma, pas de l'intention du choix du format. Dans la dernière version du script, le pattern cherche avec et sans le "v", pour détecter les cas où un schéma aurait des dissonances du type |
Entendu, c'est parfait ! |
Poke @thbar est-ce que tu as pu te pencher sur le sujet ? 🙏 J'aimerais le passer sur d'autres schémas (on a beaucoup de cas où ce serait bénéfique) |
@Pierlou je viens de faire un test, voilà l'output !
Voir:
C'est déjà chouette, je vais amender dans ce sens ! Il serait utile, à terme, d'avoir un check "pre-release" qui vérifie quand on pose un tag/crée une release que le tag ex: 'v2.3.1` est raccord avec ce qui est dans le schéma, et d'empêcher la création du tag/release si cela est possible ! (là ce n'est pas raccord chez nous, par exemple). Chouette boulot, ça me paraît bien, je vais conserver de notre côté. |
Merci pour ce retour ! En effet dans l'idéal ce serait bien d'avoir un process qui gère un peu tout (checks de cohérence, montée de version...). On pourrait imaginer un script qui passe lors d'une nouvelle release, mais je ne suis pas sûr de voir comment ça s'articulerait : l'action ici est sur un push, donc on a encore le temps d'amender avant de merge, mais lors de la création d'une release on n'a pas cette étape intermédiaire, donc on serait sur un test a posteriori ? Preneur d'idées sur le sujet |
On a l'air d'avoir atterri sur un bon premier jet, merci à tous pour vos retours ! Je vous propose de continuer nos échanges sur le sujet dans cette issue |
No description provided.