10

我有一份 Jenkins 工作,它来自一个运行良好的 BitBucket 存储库,现在仍然如此。但是,我添加了一个子模块,詹金斯对此感到窒息。这是来自 Jenkins 控制台输出的剪辑:

致命:命令“C:\Program Files (x86)\Git\cmd\git.exe submodule update”返回状态码 1:stdout: Cloning into 'submodules/my.repo'...

标准错误:致命:身份验证失败

我正在使用一个 ssh 密钥,该密钥已添加到 BitBucket 中的主存储库的部署密钥中。这总是有效的。我在子模块 repo 的部署密钥中添加了相同的密钥。谁能告诉我为什么身份验证失败?

4

5 回答 5

6

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

作业定义页面的子模块配置部分(“其他行为”>“高级子模块行为”)包括一个复选框“使用来自父存储库默认远程的凭据”。选中该框,父存储库中的凭据将用于子模块。

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

于 2017-05-15T04:01:55.027 回答
0

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

于 2013-07-29T09:24:59.630 回答
0

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

于 2020-05-19T13:29:39.057 回答
0

git config --global credential.helper wincred

https://help.github.com/articles/caching-your-github-password-in-git/#platform-windows

于 2016-06-24T21:38:28.997 回答
0

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

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

SYSTEM 主目录因操作系统版本和设置而异。要识别它,只需 echo env。变种。%USERPROFILE%

于 2016-01-16T14:04:38.627 回答