Übergebe den String an Jenkins Job von Slack

12

In einer idealen Welt könnten unsere weniger technisch versierten Mitarbeiter einfach einen Slack-Befehl verwenden, um einen Job auszuführen und die Ergebnisse an sie zurückzuliefern, was die Verwendung der Jenkins-GUI negiert. Ich habe festgestellt, dass das Starten eines Builds in Jenkins mithilfe eines Slack-Befehls auf GitHub einige Einschränkungen aufweist, einschließlich der Tatsache, dass eine Heroku-Instanz im Verhältnis 1: 1 für Jenkins-Jobs erforderlich ist, was für unsere Zwecke nicht besonders gut ist.

Mein Gedanke ist, dass Leute einen singulären Befehl wie verwenden /jenkinsund danach Parameter verwenden, die von einem Job analysiert und verwendet werden, um andere stromabwärts zu starten. Das hält uns an einem losen Befehl / einer Instanz fest, gibt uns aber trotzdem die Flexibilität, die wir brauchen.

Das Problem besteht darin, die Parameter an Jenkins weiterzuleiten. Ich stelle mir so etwas wie den folgenden Workflow vor.

  1. Benutzer gibt /Jenkins job2 param1 param2Slack ein. Dies ruft einen Umbrella-Job auf, der die Parameter analysiert, um herauszufinden, was ausgeführt werden soll.

  2. Der Befehl wird irgendwie an den Regenschirm-Jenkins-Job gesendet. Heroku-Instanz, direkte Integration, w / e.

  3. Regenschirmjob wird job2 param1 param2als Zeichenfolge empfangen . (Vielleicht als Wert eines einzelnen Parameters, vielleicht in mehrere Felder aufgeteilt)

  4. Umbrella-Job teilt die Zeichenfolge auf, falls dies noch nicht geschehen ist, und ermittelt job2anhand der Parameter param1und , ob der Benutzer sie ausführen möchte param2.

  5. Umbrella-Job führt einen Buildjob aus, um den aufgerufenen Downstream-Job auszuführen, der dem Benutzer die Ergebnisse zurückgibt.

Es sind die Schritte 2-3, die mich auslösen. Wie kann ich eine Zeichenfolge (mit Leerzeichen!) Von Slack an meinen Jenkins-Job übergeben?

Wenn meine gesamte Prämisse falsch ist, bin ich auch offen dafür, meinen Rahmen herausfordern zu lassen.

Alex
quelle

Antworten:

5

Das Plugin, das Sie gefunden haben, hat kein 1: 1-Verhältnis zwischen Heroku-Instanzen mit Build-Jobs, da der Jobname als Parameter verwendet wird. Sie sollten also in der Lage sein, eine beliebige Anzahl von Jobs von einer einzelnen Heroku-Instanz aus auszuführen.

Beim Übergeben eines Leerzeichens in einem Job-Parameter wird das Wort auf Leerzeichen aufgeteilt, sodass das Zitieren nichts ändert. Sie könnten möglicherweise versuchen, das HTML-Abstandszeichen zu verwenden %20und zu prüfen, ob es funktioniert?

Persönlich würde ich versuchen, das Plugin zu verwenden, um den richtigen Job mit den zugehörigen Parametern direkt auszuführen, anstatt Jobs zu filtern.

Michael Pereira
quelle
1
Um genau zu sein, wird die Aufteilung auf Leerzeichen ein paar Zeilen über Ihrem Link vorgenommen. Ich habe nicht genug
gegraben
Sie haben Recht , es wird durch diese Zeile auf Leerzeichen aufgeteilt. Github.com/joshdholtz/jenkins-slack-command/blob/master/… Es spielt also keine Rolle, ob es Anführungszeichen gibt oder nicht
Michael Pereira
Yep-Parameter werden durchlaufen und erneut geteilt = dies wird unterbrochen, wenn ein Wert Leerzeichen enthält. Die Verwendung von% 20 funktioniert möglicherweise, wenn sie im Slack-Modus gepostet werden, muss jedoch getestet werden, da ich keine Ahnung habe, wie Jenkins oder Slack sie analysieren oder beibehalten können
Tensibai