Voglio che Jenkins (1.561) costruisca richieste di unione (pull) inviate a GitLab (6.7.5), innescate da un hook web di richiesta di unione. Ho una build con parametri, e i plugin Jenkins "GitLab Merge Request Builder" (1.2.0) e "GitLab Hook" (1.0.0). La migrazione a Jenkins CI non è, purtroppo, una vera opzione.
Il Merge richiesta Builder plug-in è in grado di costruire le richieste di unione, a patto che le variabili gitlabMergeRequestId
, gitlabTargetBranch
e gitlabSourceBranch
sono disponibili. Funziona bene quando il plug-in esegue il polling del repository stesso, oppure innesco la build con un payload manuale (ad esempio curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters
), ma non posso farlo con un hook.
Utilizzando il plug-in GitLab Hook, sono in grado di ottenere i dati necessari nel payload JSON, ma i valori hanno chiavi "errate":
gitlabMergeRequestId
èid
gitlabTargetBranch
ètarget_branch
gitlabSourceBranch
èsource_branch
Ho provato a configurare i parametri di build con i requisiti del plug-in GitLab Merge Request Builder Name
e valori variabili come Default Value
. Sfortunatamente (e probabilmente intenzionalmente), le variabili nei Default Value
campi non vengono sostituite, quindi Jenkins sta cercando una richiesta di unione con l'id ${id}
e valori di ramo simili.
Non ho trovato alcun modo per configurare il payload inviato da GitLab e non ci sono opzioni di configurazione né per il plug-in GitLab Hook né per i nomi dei parametri utilizzati dal plug-in GitLab Merge Request Builder.
Sto pensando di scrivere un piccolo script PHP per intercettare e modificare il payload dal POST prima di trasmetterlo a Jenkins. Anche se sono sicuro che funzionerà, sembra decisamente inutilmente complicato.
L'unica altra vera opzione che posso vedere è quella di modificare la fonte dei plugin, ma questo rende l'aggiornamento a PITA.
Ho trascurato qualcosa di ovvio, o non c'è davvero un modo più semplice per innescare le build di Merge Request con un hook web da GitLab a Jenkins?