Jenkins:一起使用 ssh-agent 和 git 插件

Jenkins:一起使用 ssh-agent 和 git 插件

因此,我有以下情况:一台服务器,每个项目都有专门的用户(例如foo),还有一台以jenkins用户身份运行的 jenkins 服务器。我为我的用户生成了一个 SSH 密钥对foo,并将公共密钥作为部署密钥添加到 github 存储库。(我已验证我可以使用用户克隆存储库foo

在 Jenkins 中,我在“管理 Jenkins”>“管理凭据”中将身份验证设置为“带有私钥的 SSH 用户名”,用户名为“foo”,foo私钥在“全局”范围内。

所以我使用正确的工作空间(例如,显然/home/foo/deployment用户拥有完全所有权foo)并且使用凭证“foo”。对于“源代码管理”,我想使用我的仓库的 SSH URL(例如[电子邮件保护]:foo/foo.git) 但是它立即通知我存在权限问题:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:foo/foo.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

如果我使用 https 版本的 URL(https://github.com/foo/foo.git)错误消失了,但是当我运行作业时,我在控制台输出中收到以下错误:

Started by user developer
[EnvInject] - Loading node environment variables.
Building in workspace /home/foo/deployment
Cloning the remote Git repository
Cloning repository https://github.com/foo/foo.git
 > git init /home/foo/deployment # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init /home/foo/deployment
    [long stacktrace]
Caused by: hudson.plugins.git.GitException: Command "git init /home/foo/deployment" returned status code 1:
stdout: 
stderr: /home/foo/deployment/.git: Permission denied
    [long stacktrace]
ERROR: null
Finished: FAILURE

密钥对不使用密码,但如果我先让它工作,我想添加一个。Jenkins 在 Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-65-generic x86_64)机器上运行。

我这里漏掉了什么?看来我提供的凭据未被使用,这解释了为什么权限会爆炸。但我不明白为什么它们未被使用?为什么不能使用 URL git@

由于它因权限问题而阻塞,git init我手动运行了它,但重新运行Jenkins作业时它又因权限问题而/home/foo/deployment阻塞。git fetch

答案1

啊,是的,我很傻。SSH 用户代理显然只允许用户以jenkins身份连接到远程存储库foo,但不授予其写入本地文件系统的权限...

相关内容