我在Jenkins的一个项目中有一个子模块.我已启用高级设置以递归更新子模块.
当我运行构建时,我看到工作区有子模块中的文件.问题是,它似乎是子模块的第一次修订.当我推送更改(在GitHub上托管的存储库)时,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但由于安全问题,我无法在底部使用建议的解决方案.这里有没有人有这个问题的经验或可能的解决方案?
Jenkins被用于从具有Git子模块的Git仓库构建工件.子模块与父项目不在同一个repo中,甚至不在同一端点.问题是父repo检查正常,因为凭证ssh密钥A与主/父repo相关联,但不出所料,在子模块上失败,因为凭证ssh密钥B与Jenkins的repo没有关联' 观点看法.
令人惊讶的是Jenkins对Git子模块没有更好的开箱即用支持; 贡献的时间.
在Docker机器上运行Jenkins(本地)
在CentOS上运行Jenkins(生产)
詹金斯版本:2.60.2(两者)
Git插件版本:3.6.4(两者)