问题很简单:Jenkins 可以使用ssh://ci_ro@server访问主 git 存储库(效果很好),但是我有 URL 不同的子模块:ssh://server(没有定义一些用户,这是为了允许开发人员使用此 repo 及其子模块)。我绝对不允许(坦率地说不想)提交 CI 特定的 .gitmodule 文件(这会破坏开发人员的存储库),所以请不要提及它。所以詹金斯可以拉主回购但立即失败:
Caused by: hudson.plugins.git.GitException: Command "git submodule update --init --recursive" returned status code 1: Cloning into blah/blah...
Host key verification failed.
fatal: The remote end hung up unexpectedly
Clone of 'ssh://server:someport/blah/blah...' into submodule path 'blah/blah' failed
我的问题:是否可以告诉 Jenkins 使用 ssh://ci_ro@server... 子模块的 URL 前缀而不是 .gitmodules 中配置的前缀?或者任何其他可用的解决方法、插件或黑客?我浏览了工作选项,没有找到任何有用的选项。
更新
感谢所有的帮助。解决方案是允许“jenkins”系统用户使用 git 从特定的 ssh 服务器/端口中提取。