为什么Jenkins在git子模块更新时收到Authentication Failed错误?

时间:2013-06-14 02:04:25

标签: git jenkins bitbucket git-submodules

我有一个詹金斯的工作,从一个工作正常的BitBucket回购中提取,现在仍然如此。但是,我添加了一个子模块,Jenkins对此感到窒息。这是来自Jenkins控制台输出的剪辑:

  

致命:命令“C:\ Program Files(x86)\ Git \ cmd \ git.exe子模块更新”返回状态码1:   stdout:克隆到'submodules / my.repo'......

     

stderr:致命:身份验证失败

我正在使用一个ssh密钥,我将其添加到BitBucket中主要仓库的部署密钥中。这一切都有效。我在子模块repo的部署密钥中添加了相同的密钥。谁能告诉我为什么认证失败了?

5 个答案:

答案 0 :(得分:2)

3.0.0之前的Jenkins git插件的版本不支持子模块身份验证。 Jenkins git插件现在支持使用与父存储库相同的凭据和协议的子模块身份验证。 2016年9月10日发布的Jenkins git插件3.0.0中添加了支持。

作业定义页面的子模块配置部分("附加行为">"高级子模块行为")"现在包含一个复选框"使用来自父存储库的默认远程的凭证"。检查该框和父存储库中的凭据是否将用于子模块。

请注意,父存储库和子模块的存储库克隆协议必须相同(ssh或https),否则父资源不能与子模块存储库一起使用。

答案 1 :(得分:0)

尝试将/.ssh文件夹复制到Jenkins主目录中。

答案 2 :(得分:0)

我遇到了这个问题,Jenkins Slave(作为Windows服务执行)。 我通过在.ssh用户的SYSTEM目录中部署Jenkins SSH密钥解决了这个问题:

C:\Windows\SysWOW64\config\systemprofile\.ssh\

SYSTEM主目录因操作系统版本和设置而异。识别它只是回声env。变种。 %USERPROFILE%

答案 3 :(得分:0)

答案 4 :(得分:0)

除上述答案外,我意识到我在主仓库中使用子模块的https url,因此我不得不将主仓库仓库中的子模块url的https更改为ssh。