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.