[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 启动脚本相关联,这样您就无需为每个命令输入密码——我不确定这是否与此相关。
否则我不确定我还能尝试什么。任何提示都会有所帮助!