jenkins falha ao conectar-se ao repositório git

11

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

em "Projeto > Configurar > Gerenciamento de código-fonte" Eu defino o URL do repositório para "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 funciona.

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

Por favor, note que isto não é sobre o github, mas sobre um repositório git local.

atualização:

adicionando a chave pub do mestre jenkins ao escravo da construção, ajudou a fazer a configuração funcionar:

ssh-copy-id jenkins@dilbert

agora as construçõ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 jenkins, o dilbert é o escravo da construção. ssh do mestre para o trabalho 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?

    
por Jörg Beyer 22.03.2015 / 14:58

1 resposta

5
A autenticação de

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

deixe-me saber se você precisa de instruções sobre como configurar a autenticação ssh e eu vou editar este post aqui.

/ EDIT:

feliz que você tenha executado. Eu olhei no site oficial da Jenkins para um manual detalhado sobre a parte ssh da configuração, mas não consegui encontrar nenhum.

então 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 (mestre de Jenkins)
  2. máquina de construção é executada como usuário jenkins (por exemplo, jenkins @ dilbert: ~ $)
  3. git-server é executado como usuário git (por exemplo, git @ store: ~ $)
  4. chave pública de jenkins @ dilbert precisa ser colocada em git @ store authorized_keys
  5. execute jenkins@dilbert:~/.ssh$ ssh-copy-id git@store para copiar a chave pública do jenkins @ dilbert ssh para o servidor git
por 22.03.2015 / 15:31

Tags