jenkins 无法连接到 git 存储库

jenkins 无法连接到 git 存储库

我无法以 Jenkins 可以访问的方式配置 git 存储库 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 进行访问在 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 存储库有关。

更新:

将来自詹金斯主服务器的公钥添加到构建从服务器,有助于使配置正常工作:

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

有什么想法如何调试这个吗?

答案1

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

如果您需要有关如何设置 ssh 身份验证的说明,请告诉我,我会在这里编辑此帖子。

/编辑:

很高兴你让它运行起来。我在官方詹金斯网站上寻找有关配置 ssh 部分的详细手册,但我找不到任何。

这里有一个快速概述——如果这是您所需要的,请告诉我。

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

相关内容