Jenkins: use ssh-agent e git plugins juntos

1

Portanto, tenho a seguinte situação: um servidor com usuários dedicados para cada projeto (por exemplo, foo ) e um servidor jenkins que é executado como um usuário jenkins . Geramos um par de chaves SSH para o meu usuário foo e adicionamos o par público como uma chave de implantação a um repositório do github. (Verifiquei que posso clonar o repositório com o usuário foo )

No Jenkins, eu configuro a autenticação em "Gerenciar Jenkins" > "Gerenciar Credenciais" como um "nome de usuário SSH com chave privada" com o Nome de Usuário "foo" e a chave privada de foo em um escopo "Global".

Então, configurei meu trabalho Jenkins com a área de trabalho correta (por exemplo, /home/foo/deployment com propriedade total para o usuário foo obviamente) e usando as credenciais "foo" . Para "Gerenciamento do código-fonte", eu queria usar o URL SSH do meu repositório (por exemplo, [email protected]: foo / foo.git) No entanto, imediatamente me notifica que há um problema de permissão:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:foo/foo.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Se eu usar a versão https da URL ( link ), o erro desaparece, mas quando eu executo o trabalho, obtenha os seguintes erros na saída do console:

Started by user developer
[EnvInject] - Loading node environment variables.
Building in workspace /home/foo/deployment
Cloning the remote Git repository
Cloning repository https://github.com/foo/foo.git
 > git init /home/foo/deployment # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init /home/foo/deployment
    [long stacktrace]
Caused by: hudson.plugins.git.GitException: Command "git init /home/foo/deployment" returned status code 1:
stdout: 
stderr: /home/foo/deployment/.git: Permission denied
    [long stacktrace]
ERROR: null
Finished: FAILURE

O par de chaves não usa uma frase-senha, mas gostaria de adicionar uma, se eu conseguir esse trabalho primeiro. Jenkins é executado em um Ubuntu 14.04.2 LTS (GNU / Linux 3.13.0-65-genérico x86_64) caixa.

O que estou perdendo aqui? Parece que as credenciais fornecidas não estão sendo usadas, o que explica por que ela explode com permissões. Mas eu não entendo porque eles não estão sendo usados? E por que não pode usar a URL git@ ?

Como ele engasga com um problema de permissão com git init , executei isso manualmente em /home/foo/deployment , mas executando novamente o trabalho de Jenkins, ele engasgou com git fetch , novamente com problemas de permissões.

    
por Creynders 15.10.2015 / 14:16

1 resposta

1

Ah sim, muito bobo eu. O agente de usuário SSH obviamente permite que o usuário jenkins se conecte ao repositório remoto como foo , mas não concede permissões para gravar no sistema de arquivos local ...

    
por 15.10.2015 / 16:37