Déclenchement de la génération Jenkins pour la demande de fusion à partir du hook Web GitLab

10

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, gitlabTargetBranchet gitlabSourceBranchsont 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 est id
  • gitlabTargetBranch est target_branch
  • gitlabSourceBranch est source_branch

J'ai essayé de configurer les paramètres de construction avec les exigences du plugin GitLab Merge Request Builder as Nameet les valeurs variables as Default Value. Malheureusement (et probablement intentionnellement), les variables dans les Default Valuechamps 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?

Martin Lehmann
la source

Réponses:

0

Vérifiez ce nouveau plugin (gitlab-plugin), peut-être que cela aide. Ce plugin émule Jenkins en tant que service Web GitlabCI à utiliser avec GitlabHQ.

xaniasd
la source