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
, gitlabTargetBranch
und gitlabSourceBranch
steht 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
istid
gitlabTargetBranch
isttarget_branch
gitlabSourceBranch
istsource_branch
Ich habe versucht , Build-Parameter mit den Anforderungen des GitLab Merge Request Builder-Plugins als Name
und den Variablenwerten als zu konfigurierenDefault Value
. Leider (und wahrscheinlich absichtlich) werden die Variablen in den Default Value
Feldern 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?
quelle