Configurando o webhook pós-recebimento do Github com o repositório privado Jenkins e privado

3

Estou tentando configurar um projeto particular do GitHub para enviar uma solicitação de pós-recebimento para uma instância privada do Jenkins, a fim de acionar uma construção de projeto no envio de ramificação. Usando o mais recente Jenkins com o plugin do GitHub.

Acredito que eu configurei tudo corretamente no lado do Jenkins porque ao enviar uma requisição de um servidor público com o curl assim:

curl http://username:password@ipaddress:port/github-webhook/

resulta em:

Stacktrace: net.sf.json.JSONException: null object

, o que é bom porque a carga útil do JSON está ausente. Enviar o nome de usuário e a senha incorretos nos resultados da URI:

Exception: Failed to login as username

Eu interpreto isso como uma configuração correta do Jenkins. Ambas as solicitações também resultam em entradas no log do Jenkins. No entanto, ao colar exatamente o mesmo URI de cima para o Gancho de Serviço de URLs Pós-Recebimento do repositório do Github e clicar no Gancho de Teste , absolutamente nada parece acontecer no meu servidor. Nada no log do Jenkins e no GitHub Hook Log no projeto Jenkins diz que Polling ainda não foi executado.

Eu fiquei sem ideias e não sei como prosseguir.

    
por Joseph S. 17.03.2012 / 14:54

1 resposta

1

Tente usar o Apache como proxy na frente do Jenkins. Eu uso NameVirtualHost ...

<VirtualHost>
  --Snip---    

<Proxy *>
      AddDefaultCharSet Off
      Order deny,allow
      Allow from all
     --snip-- #You can tighten this to only allow from GITHUB ips.
</Proxy>

    RequestHeader unset Authorization
    RequestHeader set Authorization "Basic [AUTHSTRING]"
    ProxyPass / [AJP|HTTP]://[JENKINS]:[PORT]/
    ProxyPassReverse / [AJP|HTTP]://[JENKINS]:[PORT]/

</VirtualHost>

Eu executo o Jenkins em um contêiner do tomcat e uso o AJP, portanto, o var [AJP | HTTP] pode ser para o proxy. As variáveis [JENKINS] e [PORT] devem ser intuitivas.

Agora a parte difícil, [AUTHSTRING]!

Pegue a parte USERNAME: PASSWORD e execute-a através deste comando:

$ echo -n 'username:password' | base64
 dXNlcm5hbWU6cGFzc3dvcmQ=

(echo -n é importante para remover a nova linha). Pegue o resultado e coloque em [AUTHSTRING]

Você deve conseguir remover o usuário: senha da linha no github.

    
por 09.10.2013 / 19:20