在 jenkins 服务器上设置 git 私有存储库项目

Setting git private repository project on jenkins server

我正在尝试在 jenkins 服务器上设置 git 私人仓库。我已经安装了 git 插件和 git 集线器。当我在 jenkins 项目 ui 中设置 repo url 时,错误是

Failed to connect to repository : Command "git -c core.askpass=true 
ls-remote -h git@github.com:repo/project.git HEAD" returned 
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedl

到目前为止我做了什么:

  1. 我的服务器用户和 jenkin 用户(都在同一台服务器上)不同。虽然在我看来这些并不相关。 jenkins 用户获得所有凭据。

  2. 在我的服务器 var/lib/jenkins/.ssh 下(.ssh 是我创建的)我添加了 ssh 密钥。 Public 密钥已添加到 github 仓库。

  3. 通过将用户切换到 jenkins,我可以通过这个 ssh 克隆项目。所以我认为没有任何 public 键添加问题。

我用谷歌搜索了这个问题。有很多解决方案。我尝试了其中的大部分。但仍然没有解决办法。可能我遗漏了什么。

我的仓库 url 是这样的 git@github.com:repo/project.git

这取决于 Jenkins 为 运行 时 HOME 的设置:git 将在 $H[ 下查找 ssh(public 和私有)密钥=11=].

只需添加带有回显 $HOME 的构建步骤,并确保您的 .ssh 在该文件夹中。

如果您的 HOME 设置为 /var/lib/jenkins/ 那么我希望您已成功完成所有步骤:)

那么你的情况可能会发生一件事。就像您使用以下命令切换用户时一样:

su jenkins 

此命令意味着您切换用户,但主目录将与root 的主目录相同!

因此您需要通过确认特定用户主页也已切换来切换用户。为此,您需要遵循:

su -s /bin/bash jenkins

然后您需要再次生成 ssh public 密钥或只更新已知主机。这会起作用。

Related Link