Acionando a construção do Jenkins para solicitação de mesclagem do gancho da web do GitLab

10

Eu quero que Jenkins (1.561) crie solicitações de mesclagem (pull) submetidas ao GitLab (6.7.5), acionadas por um web hook de solicitação de mesclagem. Eu tenho uma compilação com parâmetros, e os plugins do 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.

O plug-in do Merge Request Builder é capaz de criar solicitações de mesclagem, contanto que as variáveis gitlabMergeRequestId , gitlabTargetBranch e gitlabSourceBranch estejam disponíveis. Isso funciona bem quando o plug-in pesquisa o próprio repositório ou aciono a construção com uma carga útil manual (por exemplo, curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters ), mas não consigo fazer isso com um gancho.

Usando o plug-in do GitLab Hook, consigo obter os dados necessários na carga útil do JSON, mas os valores têm chaves "erradas":

  • gitlabMergeRequestId é id
  • gitlabTargetBranch é target_branch
  • gitlabSourceBranch é source_branch

Eu tentei configurar parâmetros de compilação com o GitLab Requisitos do plug-in Merge Request Builder como Name e valores de variáveis como Default Value . Infelizmente (e provavelmente intencionalmente), as variáveis nos campos Default Value são não substituídas, então Jenkins está procurando por uma requisição de mesclagem com o id ${id} e valores de ramificação similares.

Não encontrei nenhuma maneira de configurar a carga útil enviada pelo GitLab e não há opções de configuração para o plug-in do GitLab Hook nem para os nomes de parâmetro usados pelo plug-in do 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 o Jenkins. Embora eu tenha certeza de que isso funcionará, definitivamente parece desnecessariamente complicado.

A única outra opção real que eu posso ver é alterar a fonte dos plugins, mas isso faz com que eles sejam atualizados como PITA.

Ignorei algo óbvio ou não há realmente uma maneira mais simples de acionar as compilações do Merge Request com um web hook do GitLab para o Jenkins?

    
por Martin Lehmann 01.05.2014 / 17:58

3 respostas

2

Dê uma olhada no plugin Plugin do Gitlab Merge Request Builder.Configure o Jenkins em Manage Jenkins e configure o gitlab url no construtor de solicitação de fusão. Siga as instruções em link 1

    
por 27.10.2014 / 07:48
0

Verifique este novo plugin (gitlab-plugin), talvez ajude. Este plugin emula o Jenkins como um Serviço Web GitlabCI para ser usado com o GitlabHQ.

    
por 31.07.2014 / 13:28
0

Você pode usar o Genic Webhook Trigger para Jenkins. Ele pode contribuir com qualquer valor da estrutura JSON do webhook para a construção.

link

    
por 04.09.2017 / 08:45