o jenkins falha ao conectar-se ao repositório git

11

Não consigo configurar o URL do repositório git de forma que Jenkins possa acessá-lo.

em "Projeto> Configurar> Gerenciamento do código-fonte", defino o URL do repositório como "git @ store: repositories / testproject.git"

Eu recebo este erro:

Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: Could not read from remote repository.

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

o acesso com esse URL funciona em um shell:

jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password: 
4fd35a4f528e2f2921a52cfd03918b7cbde3d253    refs/heads/master

Me pedem uma senha e ela funciona.

Associei a mesma senha às credenciais no Jenkins para "git /" e também tentei "git @ store /". Nenhum funcionou.

Por favor, note que não se trata do github, mas de um repositório git local.

atualizar:

adicionar a chave pub do mestre jenkins ao slave da construção ajudou a obter a configuração funcionando:

ssh-copy-id jenkins@dilbert

agora as compilações estão falhando:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@store:repositories/testproject.git # timeout=10
Fetching upstream changes from git@store:repositories/testproject.git
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@store:repositories/testproject.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:735)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:983)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1016)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1751)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

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

store é o mestre dos jenkins, dilbert é o escravo da construção. ssh do mestre para o escravo.

jenkins@store:~$ ssh dilbert uptime
 16:06:21 up 3 days, 18:53, 13 users,  load average: 0,31, 0,38, 0,50

alguma idéia de como depurar isso?

Jörg Beyer
fonte

Respostas:

5

autenticação funciona via ssh. você adicionou a chave ssh pública do usuário jenkins ao git-user no seu git-server?

entre em contato se precisar de instruções sobre como configurar a autenticação ssh e eu vou editar esta postagem aqui.

/EDITAR:

feliz que você conseguiu. Procurei no site oficial da jenkins um manual detalhado sobre a parte ssh da configuração, mas não encontrei nenhum.

aqui está uma visão geral rápida - deixe-me saber se é isso que você precisa.

  1. jenkins slave (a máquina de construção) se conecta ao git-server (jenkins master)
  2. a máquina de construção é executada como usuário jenkins (por exemplo, jenkins @ dilbert: ~ $)
  3. O git-server é executado como usuário do git (por exemplo, git @ store: ~ $)
  4. A chave pública jenkins @ dilbert precisa ser colocada em git @ store allowed_keys
  5. execute jenkins@dilbert:~/.ssh$ ssh-copy-id git@storepara copiar a chave pública jenkins @ dilbert ssh para o servidor git
kindaleek
fonte
você poderia explicar quais usuários o ssh-key adiciona a onde?
Jörg Beyer
o usuário Jenkins deve ter seu pub-chave armazenada em <Jenkins casa do usuário dir> / ssh / id_rsa.pub este precisa para ser adicionado ao <home do usuário git dir> / ssh / authorized_keys..
kindaleek
fazendo "jenkins @ store: ~ / .ssh $ ssh-cópia-id git @ store" get jenkins para aceitar a configuração (que é uma melhoria), mas uma construção em um escravo remoto de jenkins falha. qualquer ideia?
Jörg Beyer
bom ler. infelizmente, minha experiência com o git termina praticamente lá ... mas eu me lembro de um problema semelhante no trabalho. posso estar enganado agora, mas você tem que trabalhar como usuário (por exemplo, Joerg Beyer) na plataforma git, certo? verifique a permissão lá (você pode alterar as permissões dos usuários na interface da web para cada grupo ao qual pertencem). tentar defini-lo para o desenvolvedor para testes / EDIT: você escreveu Jenkins remotos Escravo - se ele usa um par de chaves diferentes, você precisa adicionar a chave pública para authorized_keys do git, mais uma vez
kindaleek
não tenho certeza. Eu atualizei a pergunta. Qual chave ssh eu preciso adicionar onde?
Jörg Beyer