5

[Update2] 那么当我从 CLI 运行 git 时它提示我输入密码可以吗?我可以使用 ssh 私钥的密码访问 github 服务器,但在 Jenkins 中从未提示我这样做或被要求提供它。[/更新2]

[更新] 是的。我在 EC2 上的 ubuntu 实例上运行它。我在 /var/lib/jenkins/.ssh 中生成了 ssh 密钥,这是 Jenkins 创建的用户。我在 Jenkins 中设置了安全选项以使用 Unix 用户/组。[/更新]

我试图让詹金斯从 git (github) 中拉出来。我收到以下错误:

hudson.plugins.git.GitException: Could not clone [my personal repo]
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:245)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1121)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1063)
    at hudson.FilePath.act(FilePath.java:832)
    at hudson.FilePath.act(FilePath.java:814)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1063)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1218)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:581)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:470)
    at hudson.model.Run.run(Run.java:1434)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:239)
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin git@github.com:bobbylo/Verbify.git /var/lib/jenkins/.jenkins/jobs/build_dev/workspace" returned status code 128:
stdout: Initialized empty Git repository in /var/lib/jenkins/.jenkins/jobs/build_dev/workspace/.git/

stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我已经完成了 Github ssh 教程。我在 EC2 实例上生成了一个私钥。将其放入用户 jenkins 的 .ssh 目录中。将公钥放在 Github 上(尝试部署密钥 + 普通 SSH 密钥)。我已经验证我可以进行 git over-the-wire 操作(拉取、克隆等),并且它可以通过 CLI 与用户一起工作。我已经为用户正确设置了 unix 用户/组权限(事实上,当我更改它时,我在 Jenkins 的控制台日志中看到错误日志更改)。当我尝试使用 Jenkins git 插件或执行 Jenkins shell 命令时,出现上述错误。

我已经阅读了 ssh-agent 和 ssh-add 以及如何将其与 shell 启动脚本相关联,这样您就无需为每个命令输入密码——我不确定这是否与此相关。

否则我不确定我还能尝试什么。任何提示都会有所帮助!

4

3 回答 3

4

弄清楚了:

-事实证明,如果您不是将它作为守护程序运行,它会使用您运行它的 shell 环境。- 事实证明,任何需要用户提示(如 ssh 释义)的 cmd 都被 Jenkins 视为错误。

目前的解决方案是:

- 在我通过 ssh-add 将 github pub 密钥添加到 ssh-agent 之后运行 Jenkins,这样它就不会提示输入释义。

如果我想将 Jenkins 作为守护进程运行,我想在运行它之前必须正确设置 ssh-agent(我不认为它使用当前的 shell 环境?)。

于 2012-05-04T20:25:19.393 回答
0

您确定 Jenkins 以您期望的用户身份运行吗?如果您将 Jenkins 作为服务运行,它通常以用户“本地系统帐户”启动。

这可能会有所帮助:https ://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin 。请参阅“配置 Jenkins 以使用与 msysgit Windows 安装程序捆绑在一起的 OpenSSH”部分。

另外,这个帮助了我:

http://computercamp.cdwilson.us/jenkins-git-clone-via-ssh-on-windows-7-x64

于 2012-05-04T09:56:02.467 回答
0

遇到了类似的问题,我所要做的就是确保在您以用户“jenkins”身份登录后生成部署密钥,该用户是作为 jenkins 安装的一部分创建的,然后在复制公钥后重新启动 jenkins 服务器在 github 中部署密钥。

于 2012-09-10T09:32:34.633 回答