Attivazione della build Jenkins per la richiesta di unione dal gancio web GitLab


10

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, gitlabTargetBranche gitlabSourceBranchsono 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 Namee valori variabili come Default Value. Sfortunatamente (e probabilmente intenzionalmente), le variabili nei Default Valuecampi 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?

Risposte:



0

Dai un'occhiata a questo nuovo plugin ( plugin gitlab), forse aiuta. Questo plugin emula Jenkins come servizio Web GitlabCI da utilizzare con GitlabHQ.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.