9. Livrer
Votre module fonctionne chez vous. Voici comment il arrive ailleurs.
Empaqueter
kewos module pack ./modules/library --out library-0.1.0.kwsUn .kws est une archive, et vous pouvez l’ouvrir pour vérifier ce qu’elle contient. Elle porte
en plus un manifeste d’empreintes : chaque fichier y est listé avec son empreinte, ce qui
permet de détecter qu’un paquet a été modifié entre l’export et l’installation.
Installer
kewos module install library-0.1.0.kws --modules-root /opt/kewos/current/modulesPuis alignez le schéma et redémarrez :
kewos reconcile --confirm --modules-root /opt/kewos/current/modulessudo systemctl restart kewos kewos-workerEt n’oubliez pas d’activer le module pour l’installation, sans quoi il restera invisible (voir Le rendre visible).
La signature
Par défaut, install refuse un paquet non signé. Un module qui arrive d’un tiers doit
prouver son origine : il s’exécute dans le processus du serveur, avec accès à la base.
En développement, cette exigence serait une friction inutile, alors le comportement suit l’environnement :
# Sur un poste de développement : accepté sans signature.KEWOS_ENV=development kewos module install library-0.1.0.kws
# Sur un serveur, il faut le dire explicitement.kewos module install library-0.1.0.kws --allow-unsignedkewos module install library-0.1.0.kws --require-signedPour signer, il faut une paire de clés et que l’installation cible connaisse votre clé publique. Adressez-vous à Kewos si vous distribuez des modules à vos clients.
Les migrations
Dès la deuxième version de votre module, une modification de schéma se livre en migration.
modules/library/migrations/versions/0001_add_lost_note.pyEt les migrations sont non destructives par défaut : on renomme, on remplit, on ajoute. Une suppression de colonne ou une contrainte non nulle sans valeur de remplissage se demande explicitement, parce qu’elle peut détruire des données d’un client.
Une liste de contrôle avant de livrer
- Le manifeste porte la bonne version et la bonne catégorie.
-
icon.svgexiste et utilisecurrentColor. - Chaque fichier de langue a les mêmes clés que les autres.
- Aucune chaîne visible n’est écrite en dur, ni en Python ni en JSON.
- Les groupes du module sont préfixés par son nom.
- Aucune machine à états écrite à la main.
- Aucun montant en flottant.
- Aucun
importd’un autre module métier. - Les tests passent, y compris un cas limite et un cas d’erreur par comportement.
- Un compte non administrateur a été testé, pas seulement
kws_admin.
Et ensuite
Vous avez fait le tour. Deux compléments valent la lecture :
- Le même module, en YAML, si vous préférez ne pas écrire de code.
- Lire un document (OCR), pour transformer une image en texte.