2017-08-08 1 views
1

Ich bin ein Neuling in Jenkins. Ich folgte diesem help, um Jenkins, Github und Webhook zu implementieren.Get Nutzlast Parameter in Jenkins

Allerdings stecke ich in diesem Problem fest. Ich möchte die Payload-Parameter in Jenkins erhalten, um Informationen wie Änderungen, Aktionen ... von Payload-Json zu überprüfen.

Ich schrieb ein Skript zum Testen. ACTION und $payload gibt immer leer

# !/bin/bash  
ACTION=`echo $payload | php -r '$data = file_get_contents("php://stdin"); $json = json_decode($data, true); echo $json["action"];'` 

ich einige Tutorials lesen, aber ohne Erfolg.

Antwort

1

Es gibt nur wenige Schritte, die Sie folgen sollten:

  1. Konfigurieren einer Web-Haken in GitHub, mit dem Sie mit Jenkins Kommunikation beginnt. Dies kann leicht durch gehen zu Ihrem GitHub-Repository -> Einstellung -> Web-Hooks.

  2. Geben Sie den Eintrag für den Inhaltstyp als Anwendung/x-www-form-encoded ein.

  3. Wählen Sie das Ereignis als Push-Ereignis aus.
  4. Erstellen Sie einen String-Parameter in Jenkins Server mit dem Namen "Payload".
  5. Im Anschluss an Schritt 3 wäre GitHub in der Lage, den Inhalt in dieser Variablen zu verpacken und an Jenkins zu senden.
  6. In Jenkins können Sie $ Payload Variable lesen, wenn Ihr Build gestartet wird.
  7. Analysieren Sie die JSON-Bibliothek Ihrer Wahl

Referenzen: How to process a github webhook payload in Jenkins? https://developer.github.com/webhooks/#payloads

+0

Ich habe das Push-Ereignis auf GitHub-Web-Hook aktiviert, aber ich konnte die Payload-Variable nicht auf Jenkins laden. Irgendeine Idee? – BeginnersSake

1

einfacher Weg, dies zu tun, ohne eine zusätzliche Bibliothek für JSON Parsen, würde die Generic Webhook Trigger Plugin in Jenkins werden.

Es kann jeden Wert aus dem JSON mithilfe von JSONPath auflösen und es Variablen zuweisen, die im Build verfügbar sind.