Auslösen des Jenkins-Builds für die Zusammenführungsanforderung vom GitLab-Web-Hook

10

Ich möchte, dass Jenkins (1.561) Zusammenführungsanforderungen (Pull) erstellt, die an GitLab (6.7.5) gesendet werden und durch einen Web-Hook für Zusammenführungsanforderungen ausgelöst werden. Ich habe einen parametrisierten Build und die Jenkins-Plugins "GitLab Merge Request Builder" (1.2.0) und "GitLab Hook" (1.0.0). Die Migration zu Jenkins CI ist leider keine echte Option.

Die Merge - Anfrage Builder - Plugin ist zu bauen merge Anfragen können, solange die Variablen gitlabMergeRequestId, gitlabTargetBranchund gitlabSourceBranchsteht zur Verfügung. Dies funktioniert gut, wenn das Plugin das Repository selbst abfragt oder ich den Build mit einer manuellen Nutzlast (z. B. curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters) auslöse , aber ich kann dies nicht mit einem Hook tun.

Mit dem GitLab Hook-Plugin kann ich die erforderlichen Daten in der JSON-Nutzlast abrufen, aber die Werte haben "falsche" Schlüssel:

  • gitlabMergeRequestId ist id
  • gitlabTargetBranch ist target_branch
  • gitlabSourceBranch ist source_branch

Ich habe versucht , Build-Parameter mit den Anforderungen des GitLab Merge Request Builder-Plugins als Nameund den Variablenwerten als zu konfigurierenDefault Value . Leider (und wahrscheinlich absichtlich) werden die Variablen in den Default ValueFeldern nicht ersetzt, sodass Jenkins nach einer Zusammenführungsanforderung mit der ID ${id}und ähnlichen Verzweigungswerten sucht .

Ich habe keine Möglichkeit gefunden, die von GitLab gesendeten Nutzdaten zu konfigurieren, und es gibt weder für das GitLab Hook-Plugin noch für die vom GitLab Merge Request Builder-Plugin verwendeten Parameternamen Konfigurationsoptionen.

Ich denke darüber nach, ein kleines PHP-Skript zu schreiben, um die Nutzdaten aus dem POST abzufangen und zu ändern, bevor es an Jenkins weitergeleitet wird. Ich bin mir zwar sicher, dass dies funktionieren wird, aber es scheint definitiv unnötig kompliziert zu sein.

Die einzige andere echte Option, die ich sehen kann, besteht darin, die Quelle der Plugins zu ändern, aber dies macht das Upgrade zu einer PITA.

Habe ich etwas Offensichtliches übersehen oder gibt es wirklich keine einfachere Möglichkeit, Merge Request-Builds mit einem Web-Hook von GitLab zu Jenkins auszulösen?

Martin Lehmann
quelle

Antworten:

0

Schauen Sie sich dieses neue Plugin an (Gitlab-Plugin), vielleicht hilft es. Dieses Plugin emuliert Jenkins als GitlabCI-Webdienst zur Verwendung mit GitlabHQ.

xaniasd
quelle