Je veux que Jenkins (1.561) crée des requêtes de fusion (pull) soumises à GitLab (6.7.5), déclenchées par un hook web de demande de fusion. J'ai une construction paramétrée et les plugins Jenkins "GitLab Merge Request Builder" (1.2.0) et "GitLab Hook" (1.0.0). La migration vers Jenkins CI n'est malheureusement pas une vraie option.
La demande de fusion plug - in Builder est capable de demandes de fusion de construction, tant que les variables gitlabMergeRequestId
, gitlabTargetBranch
et gitlabSourceBranch
sont disponibles. Cela fonctionne bien lorsque le plugin interroge le référentiel lui-même, ou que je déclenche la construction avec une charge utile manuelle (par exemple curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters
), mais je ne peux pas le faire avec un hook.
En utilisant le plugin GitLab Hook, je peux obtenir les données nécessaires dans la charge utile JSON, mais les valeurs ont des clés "incorrectes":
gitlabMergeRequestId
estid
gitlabTargetBranch
esttarget_branch
gitlabSourceBranch
estsource_branch
J'ai essayé de configurer les paramètres de construction avec les exigences du plugin GitLab Merge Request Builder as Name
et les valeurs variables as Default Value
. Malheureusement (et probablement intentionnellement), les variables dans les Default Value
champs ne sont pas remplacées, donc Jenkins recherche une demande de fusion avec l'id ${id}
et des valeurs de branche similaires.
Je n'ai trouvé aucun moyen de configurer la charge utile envoyée depuis GitLab, et il n'y a pas d'options de configuration pour ni le plugin GitLab Hook ni les noms de paramètres utilisés par le plugin GitLab Merge Request Builder.
J'envisage d'écrire un petit script PHP pour intercepter et modifier la charge utile du POST avant de le transmettre à Jenkins. Bien que je sois sûr que cela fonctionnera, cela semble définitivement inutilement compliqué.
La seule autre vraie option que je peux voir est de modifier la source des plugins, mais cela fait de leur mise à niveau un PITA.
Ai-je oublié quelque chose d'évident, ou n'y a-t-il vraiment aucun moyen plus simple de déclencher des builds de demande de fusion avec un hook Web de GitLab à Jenkins?