問題は単純です: Jenkins はssh://ci_ro@serverを使用してメインの git リポジトリにアクセスできます(うまくいきます) が、URL が異なるサブモジュールがあります: ssh://server (ユーザーを定義せずに開発者は、このレポとそのサブモジュールを操作する必要があります)。CI固有の.gitmoduleファイルをコミットすることは絶対に許可されていません(率直に言ってしたくありません)(これは開発者リポジトリを壊します)ので、言及しないでください。したがって、Jenkins はメイン リポジトリをプルできますが、次のように即座に失敗します。
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... .gitmodules で構成されたサブモジュールの代わりにサブモジュールの URL プレフィックスを使用するように指示することは可能ですか? または、利用可能な他の回避策、プラグイン、またはハックはありますか? ジョブ オプションを調べましたが、有用なオプションが見つかりませんでした。
アップデート
すべての助けてくれてありがとう。解決策は、「jenkins」システム ユーザーが git を使用して特定の ssh サーバー/ポートからプルできるようにすることでした。