Automatisation d'un script, sans frous-frous

Salut la compagnie, je suis entrain d’automatiser un process à base d’Airtable, Office365, Zapier et MSFlow et il me manque l’idée géniale pour dernier morceau de la chaîne.

L’idée est d’automatiser la création et la mise à jour d’un arbre généalogique géant. Via un formulaire, les membres de ma famille (largement étendue - 300 personnes environ) peuvent ajouter des personnes. Les données sont alors mises en forme pour être digérées par la bibliothèque Kingraph qui produit alors un joli SVG et envoie un mail a une mailing list pour dire qu’une nouvelle version est dispo.

Voila un exemple de ce que produit Kingraph:

J’ai automatisé toute la chaîne depuis le formulaire, jusqu’à la création du fichier YAML que mange Kingraph et l’envoi d’Emails. Il me manque juste l’automatisation de la production du SVG. Ca fonctionne actuellement uniquement en ligne de commande sur ma machine.

Voila finalement la contrainte principale: je ne veux pas avoir a m’occuper d’un serveur, VM ou autre… d’où l’utilisation des services sus-mentionnés.

A vos idées géniales, prêt, partez!

Tu peux decrire un peu plus ton pipeline avec chaque service et leurs roles? Parce que la sans rien connaitre, j’ai plein de reponses, mais j’ai le sentiment qu’aucune ne repondra vraiment a ton cas.

En gros ton pipeline complet est dans Flow?

Si tu te reposes sur Kingraph pour la generation du SVG, il doit etre “quelque part” (machine locale, rpi, serveur distant, Le Cloude, whatever) et tu dois pouvoir passer l’artefact de ton process precedent (qui genere le yaml) dans ce truc.

Dans les 300 personnes t’as pas un admin systeme qui peut se taper l’hebergement/gestion de l’hebergement?

Sure!

  1. Un formulaire sur Airtable, pour ajouter des gens.
  2. Un formulaire sur Airtable, pour tisser les relations entre les gens
  3. Un job sur Zapier qui copie les données en les malaxant un peu sur un tableau Excel (sur OneDrive)
  4. Un job sur MSFlow qui prend le tableau Excel et le malaxe pour construire le fichier YAML kivabien
  5. Le MS Flow Job écrase finalement le YAML produit dans un fichier Texte sur OneDrive

A partir de ce moment, ca redevient manuel. Je lance la generation via un shell script „kingraph monyaml.yml > monsvg.svg“.

Je sais que Zapier peut laisser tourner des Scipts Python et Javascript. MS Flow au moins des Powershell. Mais je ne sais pas comment ca marche quand le script en question a des dependencies…

Avec mes connaissances actuelles, je ne vois pas comment resoudre ca dans les contraintes imposees.

Tu dois heberger ton kingraph a un moment ou a un autre. Les dependances ayant elles meme des dependances, je pense que l’installation sur une machine est inevitable. Apres j’adorerais me tromper, et j’espere que quelqu’un arrivera avec une solution.

Vu que kingraph s’appuie sur npm, ce projet npm zapier ne pourrait-il pas répondre à la question ?

(Je précise que je ne connais ni Airtable, ni Zapier, ni MSFlow).

edit:

Mais visiblement l’appel à des librairies extérieures à la base standard de npm ne sont pas possibles :

Zapier.com/help/code: Requiring or Using External Libraries:

Unfortunately you cannot require external libraries or install or import libraries commonly referred to as “npm modules”. Only the standard node.js library and the fetch package are available in the Code app. fetch is already included in the namespace.

Et vu que les technos propriétaires et le reste de la chaine c’est du Microsoft, qui n’est pas connu pour favoriser l’interopérabilité (même s’ils se sont récemment un tout petit peu amélioré), il y a encore moins de chance que cela soit possible, mais sait-on jamais, mais je doute.

J’ai vu des trucs npm onedrive. Mais à chaque fois c’est pour appeler de l’extérieur Onedrive. (Idem pour Airtable même si ce n’est pas du Microsoft).

Comme dit Ravine, si ta chaine ne peut pas héberger Kingraph , il faut bien qu’il soit hébergé quelque part, même si c’est pour 3 lignes de codes sur un serveur.

1 Like

Merci pour vos réponses.

Je ne vois pas non plus vraiment comment résoudre le pb. Je vais regarder du coté des AWS-Lambda, peut-être qu’il y a moyen de créer une fonction avec des dependencies là bas. Ce serait un compromis…