Passer la chaîne au travail Jenkins depuis Slack

12

Dans un monde idéal, nos employés moins compétents en technologie pourraient simplement utiliser une commande Slack pour exécuter un travail et obtenir des résultats qui leur sont relâchés, annulant l'utilisation de l'interface graphique Jenkins. J'ai trouvé Démarrer une génération dans Jenkins en utilisant une commande Slack sur GitHub, mais il y a quelques limitations, notamment le fait qu'il semble nécessiter une instance Heroku au rapport 1: 1 pour le travail Jenkins, ce qui n'est pas génial pour nous.

Ma pensée est que les gens utilisent une commande singulière comme /jenkins, et utilisent ensuite des paramètres qui seront analysés par un travail et utilisés pour lancer d'autres en aval. Cela nous maintient à une commande / une instance lâche, mais nous donne toujours toute la flexibilité dont nous avons besoin.

Le problème réside dans l'obtention des paramètres à Jenkins. J'imagine quelque chose comme le flux de travail suivant;

  1. Types d'utilisateurs /Jenkins job2 param1 param2dans Slack. Cela appelle un travail parapluie qui analysera les paramètres pour savoir quoi exécuter.

  2. La commande est en quelque sorte envoyée au travail de parapluie jenkins. Instance Heroku, intégration directe, w / e.

  3. Le travail parapluie reçoit job2 param1 param2une chaîne. (Peut-être comme la valeur d'un seul paramètre, peut-être pré-divisé en plusieurs champs)

  4. Le travail parapluie divise la chaîne si ce n'est pas déjà fait et détermine que l'utilisateur veut job2exécuter, en utilisant les paramètres param1et param2.

  5. Le travail parapluie fait un buildjob pour exécuter le travail en aval comme appelé, ce qui ramènera à l'utilisateur ses résultats.

Ce sont les étapes 2-3 qui me font trébucher. Comment passer une chaîne (avec des espaces!) De Slack à mon travail Jenkins?

Si toute ma prémisse est fausse, je suis également prêt à voir mon cadre remis en question.

Alex
la source

Réponses:

5

Le plugin que vous avez trouvé n'a pas un rapport 1: 1 entre l'instance Heroku et les travaux de construction, car il prend le nom du travail comme paramètre, vous devriez donc être en mesure d'exécuter n'importe quel nombre de travaux à partir d'une seule instance Heroku.

En ce qui concerne le passage d'un espace dans un paramètre de travail, le mot est divisé sur les espaces afin que les guillemets ne changent rien. Vous pourriez éventuellement essayer d'utiliser le caractère d'espacement HTML %20et voir si cela fonctionne?

Personnellement, j'essaierais d'utiliser le plugin pour exécuter le travail correct avec les paramètres associés directement au lieu de passer par des travaux de filtrage.

Michael Pereira
la source
1
Pour être exact, le fractionnement des espaces se fait quelques lignes au-dessus de votre lien, je n'ai pas creusé suffisamment pour confirmer ou non qu'il se divisera sur tous les espaces, mais il semble que ça va
tourner
Vous avez raison, elle est divisée en espaces par cette ligne github.com/joshdholtz/jenkins-slack-command/blob/master/… donc peu importe s'il y a des guillemets ou non autour des paramètres
Michael Pereira
Les paramètres Yep sont bouclés et divisés à nouveau = cela se cassera si une valeur contient des espaces, l'utilisation de% 20 peut fonctionner lorsqu'elle est publiée dans slack, mais elle doit être testée car je n'ai aucune idée de la façon dont Jenkins ou slack peut les analyser ou les conserver
Tensibai