我有一个詹金斯的工作,从一个工作正常的BitBucket回购中提取,现在仍然如此。但是,我添加了一个子模块,Jenkins对此感到窒息。这是来自Jenkins控制台输出的剪辑:
致命:命令“C:\ Program Files(x86)\ Git \ cmd \ git.exe子模块更新”返回状态码1: stdout:克隆到'submodules / my.repo'......
stderr:致命:身份验证失败
我正在使用一个ssh密钥,我将其添加到BitBucket中主要仓库的部署密钥中。这一切都有效。我在子模块repo的部署密钥中添加了相同的密钥。谁能告诉我为什么认证失败了?
答案 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)
git config --global credential.helper wincred
https://help.github.com/articles/caching-your-github-password-in-git/#platform-windows
答案 4 :(得分:0)
除上述答案外,我意识到我在主仓库中使用子模块的https url,因此我不得不将主仓库仓库中的子模块url的https更改为ssh。