ItW*_*lDo 23 git authentication git-submodules jenkins
目前我一直在试图从Jenkins中检索存储库的子模块.我的配置很好,我可以拉没有任何子模块的存储库就好了.
我还可以使用子模块来获取repo的主要组件(在存储库名称中都使用SSH进行身份验证).只有当我必须拉动子模块组件时才会出现问题.我正在运行最新版本的Jenkins,我在底部添加了一个用于"高级子模块行为"的部分.我在这里选择了"递归更新子模块"并多次运行构建无济于事.
当我尝试使用shell命令在底部添加额外的构建步骤时,存储库的更新也不起作用.当我在终端中的jenkins之外尝试这些命令时,这很好用.我总是在Jenkins得到的问题是:
FATAL: Command "git submodule update" returned status code 1:
stdout:
stderr: Cloning into 'thisismysubmodule'...
fatal: Authentication failed for 'https://git.thisismyrepo.com/scm/ap/thisismysubmodule.git/'
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题:https://issues.jenkins-ci.org/browse/JENKINS-20941但由于安全问题,我无法在底部使用建议的解决方案.这里有没有人有这个问题的经验或可能的解决方案?
Ben*_*hon 13
以下是使用SSH代理转发的解决方法.它对我来说很好.
<jenkins_home>/.ssh/config并设置ForwardAgent是

现在已经发布了git-client和git-plug-in模块的beta版本来解决这个问题.引用JIRA问题.
git客户端插件2.0.0-beta1已发布到实验更新中心.它包括git子模块认证,JGit 4.3,并且需要JDK 7.它至少需要Jenkins 1.625(第一个版本要求JDK 7)
使用上面的名称,在"附加行为"部分下有一个选项:
使用来自父存储库的默认远程的凭据
当使用Jenkins 2.11和运行Windows服务器和从服务器的插件的beta版本时,这解决了我的问题.我没有检查过其他构建机器.此外,您必须使用相同的身份验证方法,如果使用http,您也必须将其用于子模块,如果使用SSH,您必须将此用于子模块,尝试混合方法将无法正常工作.
- 更新 -
不再需要Beta版本,请参阅以下页面:
Git客户端插件
Git插件
小智 6
我刚刚遇到这个问题。对于使用最新版本 Jenkins(2016 年 12 月后)进行此操作的任何人,请尝试在Advanced sub-modules behavioursgit repo 配置部分中启用此选项。
Use credentials from default remote of parent repository
一种解决方案是在全局 git 配置文件中声明一个 netrc 凭据帮助,它将为来自 git 的任何 http 查询提供必要的凭据。
git config --global credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
Run Code Online (Sandbox Code Playgroud)
(确保使用与运行 Jenkins 相同的帐户)
我使用加密的 netrc 文件,但您可以使用未加密的文件开始一些测试。
| 归档时间: |
|
| 查看次数: |
16187 次 |
| 最近记录: |