Quero que o Jenkins (1.561) construa solicitações de mesclagem (pull) enviadas ao GitLab (6.7.5), acionadas por um gancho da Web de solicitação de mesclagem. Eu tenho uma construção parametrizada e os plugins Jenkins "GitLab Merge Request Builder" (1.2.0) e "GitLab Hook" (1.0.0). Migrar para o Jenkins CI, infelizmente, não é uma opção real.
Mesclar Pedido Builder plug-in é capaz de pedidos de construção de mesclagem, enquanto as variáveis gitlabMergeRequestId
, gitlabTargetBranch
e gitlabSourceBranch
estão disponíveis. Isso funciona bem quando o plug-in consulta o próprio repositório, ou eu aciono a compilação com uma carga manual (por exemplo curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters
), mas não posso fazer isso com um gancho.
Usando o plug-in GitLab Hook, sou capaz de obter os dados necessários na carga JSON, mas os valores têm chaves "erradas":
gitlabMergeRequestId
éid
gitlabTargetBranch
étarget_branch
gitlabSourceBranch
ésource_branch
Tentei configurar os parâmetros de compilação com os requisitos do plug-in GitLab Merge Request Builder Name
e os valores variáveis como Default Value
. Infelizmente (e provavelmente intencionalmente), as variáveis nos Default Value
campos não são substituídas; portanto, Jenkins está procurando uma solicitação de mesclagem com o ID ${id}
e valores de ramificação semelhantes.
Não encontrei nenhuma maneira de configurar a carga útil enviada pelo GitLab e não há opções de configuração nem para o plug-in GitLab Hook nem para os nomes de parâmetros usados pelo plug-in GitLab Merge Request Builder.
Estou pensando em escrever um pequeno script PHP para interceptar e alterar a carga do POST antes de passá-lo para Jenkins. Embora eu esteja certo de que isso funcionará, definitivamente parece desnecessariamente complicado.
A única outra opção real que posso ver é alterar a fonte dos plugins, mas isso faz da atualização deles uma PITA.
Eu negligenciei algo óbvio ou não existe realmente uma maneira mais simples de acionar compilações de Merge Request com um gancho da Web do GitLab para Jenkins?
fonte