2

問題は単純です: 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 サーバー/ポートからプルできるようにすることでした。

4

4 に答える 4

3

解決策は、Jenkins を実行しているシステム ユーザーが、指定されたホスト/ポートから SSH でプルできるようにすることでした。

于 2012-06-04T08:24:07.547 に答える
1

シェルのビルドステップからいつでも手動で行うことができます。

于 2012-05-24T12:46:15.107 に答える
0

ビルド サーバーで /etc/ssh/ssh_config を変更してみてください。

    StrictHostKeyChecking no
于 2012-05-24T14:14:57.060 に答える
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 サブモジュールの更新を行います。これは、リモートに干渉するとは思いません。これはテストされていませんが、私は音を信じています。

于 2012-05-24T14:23:00.700 に答える