问题很简单:Jenkins可以使用 ssh:// ci_ro @ server 访问主git存储库(效果很好),但我的子网址不同的子模块: 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服务器/端口拔出。
答案 0 :(得分:3)
解决方案是允许运行Jenkins的系统用户从指定的主机/端口使用SSH进行提取。
答案 1 :(得分:1)
您始终可以从shell构建步骤手动执行此操作。
答案 2 :(得分:0)
尝试在构建服务器上更改/ etc / ssh / ssh_config:
StrictHostKeyChecking no
答案 3 :(得分:0)
在构建步骤中,执行
git submodule init
然后通过子模块递归并调整它们的遥控器,这是不对的,但是当我的github用户名更改时我使用的脚本是:
#!/bin/sh
git remote -v | grep richoH | while read name url type; do
newurl=`echo $url | sed -e "s/richoH/richo/"`
git remote set-url $name $newurl
done
然后做一个git子模块更新,我不相信干扰遥控器。这是未经测试的,但我相信声音。