jenkins가 git 저장소에 연결하지 못함


11

Jenkins가 액세스 할 수있는 방식으로 자식 저장소 URL을 구성 할 수 없습니다.

"프로젝트> 구성> 소스 코드 관리"에서 저장소 URL을 "git @ store : repositories / testproject.git"로 설정했습니다.

이 오류가 발생합니다.

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.

해당 URL을 통한 액세스는 쉘에서 작동합니다.

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

암호를 묻는 메시지가 표시되고 작동합니다.

Jenkins의 자격 증명에 동일한 암호를 "git /"에 연결하고 "git @ store /"도 시도했습니다. 아무도 효과가 없었습니다.

Pleas는 이것이 github이 아니라 로컬 git 저장소에 관한 것입니다.

최신 정보:

jenkins 마스터의 pub 키를 빌드 슬레이브에 추가하면 구성 작업을 수행하는 데 도움이되었습니다.

ssh-copy-id jenkins@dilbert

이제 빌드가 실패합니다.

 > /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는 jenkins 마스터이고 dilbert는 빌드 슬레이브입니다. 마스터에서 슬레이브로 ssh.

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

어떤 아이디어로 이것을 디버깅하는 방법?

답변:


5

인증은 ssh를 통해 작동합니다. jenkins 사용자의 공개 ssh-key를 git-server의 git-user에 추가 했습니까?

ssh 인증을 설정하는 방법에 대한 지침이 필요한 경우 알려 주시면 여기에서이 게시물을 편집하겠습니다.

/편집하다:

당신이 그것을 실행 기쁘게 생각합니다. 구성의 ssh 부분에 대한 자세한 설명서는 공식 jenkins 웹 사이트를 보았지만 찾을 수 없었습니다.

여기 간단한 개요가 있습니다. 이것이 필요한지 알려주세요.

  1. jenkins 슬레이브 (빌딩 머신)가 git-server (jenkins 마스터)에 연결
  2. 빌딩 머신은 jenkins 사용자로 실행됩니다 (예 : jenkins @ dilbert : ~ $)
  3. git-server는 git user로 실행됩니다 (예 : git @ store : ~ $)
  4. jenkins @ dilbert 공개 키는 git @ store authorized_keys에 배치해야합니다.
  5. 실행 jenkins@dilbert:~/.ssh$ ssh-copy-id git@store망할 놈의 서버에 딜버트 SSH 공개 키 @ 젠킨스를 복사

ssh-key가 어떤 사용자를 어디에 추가하는지 설명해 주시겠습니까?
Jörg Beyer

jenkins 사용자는 자신의 pub-key를 <jenkins user home dir> /. ssh / id_rsa.pub에 저장해야합니다. 이것은 <git user home dir> /. ssh / authorized_keys
kindaleek

"jenkins @ store : ~ / .ssh $ ssh-copy-id git @ store"를 수행하면 jenkins가 구성을 수락하지만 (개선 사항) 원격 jenkins 슬레이브에 빌드하지 못합니다. 어떤 생각?
Jörg Beyer

읽기 좋다. 불행히도, git에 대한 나의 경험은 거의 끝나지 않지만 ... 직장에서 비슷한 문제를 기억합니다. 내가 지금 착각했을 수도 있지만 git-platform에서 사용자 (예 : Joerg Beyer)로 일해야합니까? 여기에서 권한을 확인하십시오 (사용자가 속한 각 그룹에 대한 웹 인터페이스에서 사용자 권한을 변경할 수 있음). 테스트 / 편집 을 위해 개발자로 설정하십시오 . 원격 젠킨스 슬레이브를 작성했습니다-다른 키 페어를 사용하는 경우 공개 키를 다시 git의 authorized_keys에 추가해야합니다
kindaleek

확실하지 않다. 질문을 업데이트했습니다. 어디에 ssh 키를 추가해야합니까?
Jörg Beyer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.