14

Jenkins シェルから svn コマンド ラインを実行すると、次のエラーが表示されます。

 D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive 
 Updating '.':
 svn: E175002: Unable to connect to a repository at URL 'https://xxx/stable'
 svn: E175002: OPTIONS of 'https://xxx/stable': Server certificate verification failed: certificate issued for a different hostname,  issuer is not trusted (https://xxx)

しかし、コマンド ラインの CMD ウィンドウから同じものを実行すると問題ありません。

 D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up
 Updating '.':
 At revision 1797.

また

 D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive
 Updating '.':
 At revision 1797.

これを解決する方法はありますか??

4

8 に答える 8

19

かなり古い質問ですが、まだかなり生きています。

ご存知のように、問題は、受け入れられた証明書キャッシュ (およびユーザー名/パスワード キャッシュ) がユーザーごとであり、Jenkins が別のユーザー (ほとんどの場合 SYSTEM) として実行されているため、通常のユーザーがわからないことです。キャッシュ。

すべての SVN クライアントで「echo p」を実行できるわけではなく (私には機能しませんでした)、--trust-server-certこの場合も明らかに機能しません。

私にとってうまくいったのは、コンソールウィンドウを SYSTEM として開き、そこでインタラクティブな acceptcertificate-login-password ダンスを行うことでした。

これらはすべてキャッシュされるため、これを行う必要があるのは 1 回だけです。それ以降は、すべてsvn upの同様のリクエストが機能します。

于 2013-11-20T08:19:03.143 に答える
8

私はついに問題を解決することができました!私がしたことは、単純に Jenkins スクリプトに入れるだけです。

echo p | svn up --username <usr> --password <pwrd>

これで解決!エコーは手動入力をエミュレートして、証明書を永続的に受け入れるためです。

根本的な原因は、Jenkins シェル スクリプトが Windows サービス ユーザーの下で実行されるという事実です。したがって、ユーザー プロファイル キャッシュに別の場所を使用します (C:\Windows\System32\config\systemprofile\AppData\Roaming\Subversion代わりに%USERPROFILE%\AppData\Roaming\Subversion\)

于 2012-08-14T14:55:35.863 に答える
1

これは、証明書を受け入れた場合でも発生する可能性があります。

Linux では、Jenkins は独自のユーザー名を使用します。コマンドsudo su jenkinsスイッチを jenkins user に使用してから、 commandcd ~lsを使用して jenkins ユーザーのルート パスを確認できます。私にとっては、jenkins のインストール パス (var/lib/jenkins) です。

.subversionユーザーパッケージでパッケージを確認できます。以前に証明書を受け入れていた場合はauth、.subversion でパッケージを確認できます。

パッケージ全体.subversionを jenkins インストール パッケージ (jenkins ユーザーのルート パス) にコピーします。

もう一度試してsvn up、jenkins シェルでコマンドを使用すると動作します。

私の英語は下手です、読んでくれてありがとう。

于 2019-10-31T08:53:47.667 に答える
1

echo p | svn commands

Jenkins Windows バッチ コマンド プロンプトでうまく機能しました。これを 1 回行うと、[ビルド] ボックスで Jenkins ユーザーの証明書が永続的に受け入れられます。

于 2014-09-04T16:45:12.463 に答える
0

おそらく、証明書が別のホスト名 (xxx ではなく、xxx.yourcompany.com など) に対して発行されている可能性があります。はいの場合は、このホスト名でクリーン チェックアウトを実行します。

于 2013-01-28T07:37:07.427 に答える
0

これは恐ろしい答えのように思えるかもしれませんが、他の問題のためにうまくいかなかった他のものを使い果たした後、SVNサーバーをSSLを使用しないように変更することを選択しました。

このサーバーをセットアップしたばかりで、完全に内部ネットワーク上にあるため、これは単なるオプションでしたが、問題は完全に解消されました. そして、私は他の選択肢と時間を使い果たしました。

また、誰かがそれがオプションでさえあることに気付いていない場合にのみ、これを提案します. SSL を使用すると、サーバーの露出に関係なく、気分がずっと良くなります。

于 2016-01-29T18:01:08.087 に答える
0

スレーブで Jenkins を介して Svn コマンドを実行すると、問題が発生しました。私は次のことをしました:

Unix を使用している場合は、次のリンクに従ってください: http://www.microhowto.info/howto/configure_subversion_to_trust_a_given_ssl_certificate.html

Windows を使用している場合は、次のようにします。

cd %APPDATA%\Subversion\

次に、要素から記号をserver削除してそのディレクトリ内のファイルを編集し、ssl 証明書ファイルを保存した場所へのパスを更新します。#ssl-authority-files

資格情報を保存したい場合は、以下も変更してください。

store-passwords = yes 
store-ssl-client-cert-pp = yes

それが完了したら、証明書を信頼されたルート CA ストアに追加するに従って、Windows マシンに証明書を追加する必要もあります。

于 2015-07-08T20:29:43.453 に答える