jenkins无法连接到git存储库


11

我无法以某种方式配置git存储库的URL,Jenkins可以访问它。

在“项目>配置>源代码管理”下,将存储库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的访问在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

我被要求输入密码,并且可以使用。

我将相同的密码与Jenkins中的凭据关联到“ git /”,并且还尝试了“ git @ store /”。没有工作。

请注意,这不是关于github的,而是关于本地git存储库的。

更新:

将发布密钥从jenkins主服务器添加到构建从服务器,有助于使配置正常工作:

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是詹金斯大师,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

任何想法如何调试呢?

Answers:


5

通过ssh进行身份验证。您是否已将jenkins用户的公共ssh密钥添加到git服务器上的git用户?

让我知道您是否需要有关如何设置ssh身份验证的说明,我将在此处编辑此帖子。

/编辑:

很高兴您能运行它。我在jenkins官方网站上查看了有关配置ssh部分的详细手册,但找不到任何内容。

因此,这里有一个快速概述-让我知道这是否是您需要的。

  1. jenkins slave(建筑机器)连接到git-server(jenkins master)
  2. 建筑机器以jenkins用户身份运行(例如jenkins @ dilbert:〜$)
  3. git-server以git用户身份运行(例如git @ store:〜$)
  4. jenkins @ dilbert公钥需要放置在git @ storeauthorized_keys中
  5. 运行jenkins@dilbert:~/.ssh$ ssh-copy-id git@store以将jenkins @ dilbert ssh公钥复制到git服务器

您能解释一下ssh-key添加到哪个用户吗?
约尔格·拜尔

jenkins用户应该将他的发布密钥存储在<jenkins用户主目录> /。ssh / id_rsa.pub中,这需要添加到<git用户主目录>
/。ssh

进行“ jenkins @ store:〜/ .ssh $ ssh-copy-id git @ store”会得到jenkins接受配置(这是一项改进),但是在远程jenkins从属服务器上的构建失败。任何的想法?
约尔格·拜尔

很好看。不幸的是,我在git上的经验到此结束了很多……但是我记得在工作中遇到了类似的问题。我现在可能会弄错了,但是您必须在git平台上以用户身份(例如Joerg Beyer)工作,对吗?请在此处验证权限(您可以在网络界面中为他们所属的每个组更改用户权限)。尝试将其设置为开发人员进行测试 /编辑:您编写了远程jenkins从属-如果它使用不同的密钥对,则需要再次将公共密钥添加到git的authorized_keys中
kindaleek 2015年

不确定。我更新了问题。我需要在哪里添加什么ssh密钥?
约尔格·拜尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.