0

リポジトリにアクセスする前に、次のような最初のSVNリポジトリを作成する必要があります。tunnel

ssh -L 9898:some_server.com:9898 user@another_server.com

その後、のポート9898でリポジトリにアクセスできるようになりますlocalhost。Jenkinsジョブの作成中に、SVN URLをとして指定localhostできます。Jenkinsはリポジトリにアクセスできますが、サーバー上に手動でトンネルを作成する必要があります。Jenkinsでそれを自動化して、トンネルへのアクセスが失敗した場合にトンネリングを実行して再試行できるようにする方法はありますか?

使ってますJenkins 1.487

4

3 に答える 3

1

pre-scm-buildstepのようなプラグインが必要です

これにより、SVNチェックアウトの前にビルドステップを実行できます。
これを使用して、SVNチェックアウトが開始する前に、トンネルを開くステップを構成できます。

ただし、SVNポーリングがそのようなシナリオで機能するとは思えません。

更新: OPの質問に続いて、別の可能な解決策があります:
https
://wiki.jenkins-ci.org/display/JENKINS/ScriptTrigger+Plugin 自分では使用していませんが、代わりにカスタムシェルスクリプトを実行できます定期的なポーリング。このカスタムスクリプトを使用して、最初にトンネルを確立してから、SVNの変更をポーリングできます。ただし、実際のSVNポーリングを実行するには、独自のスクリプトを作成する必要があります。ワークスペースのリビジョンをチェックし( ) svn info <LocalCheckOut>|grep Revision、リポジトリに対してチェックするのと同じくらい簡単なことです(svn info <URL>|grep Revision)。プラグインを使用すると、cron形式でポーリングの頻度をスケジュールできます。

別の怠惰な方法は、このプラグインを使用し、トンネルを確立し、SVN更新を実行して(変更があるかどうかに関係なく)、ジョブにビルドさせることです。次に、実際のビルドステップの前に、実際に新しいチェックアウトがあったかどうかを検出する定期的なビルドアクションを実行できます。

于 2012-11-03T14:22:34.947 に答える
1

スクリプトを使用してトンネルを起動し、Jenkinsジョブが終了したときに、サーバー上でトンネルが開いたままになっていますか?

もしそうなら、そしてSVNポーリングが必要な場合、私が考えることができる2つの可能な解決策があります:

  1. 上記のスクリプトを実行することを唯一の目的とする別のジョブを作成します。2〜3分ごと(またはトンネルでの通常のタイムアウト)に実行するようにスケジュールします。このようにして、サーバーが常にトンネルを開いていることを願っています。

  2. 元のジョブでは、次のプラグインで条件付きのビルド後の手順を使用します
    。https
    : //wiki.jenkins-ci.org/display/JENKINS/Post+build+task SVNチェックアウトの失敗についてログを解析し、見つかった場合は次のようにします
    。2.1実行トンネルを確立するためのスクリプト
    2.2curl2.3を使用してジョブを再起動する
    オプションで、テキストファインダープラグインを使用して、失敗したビルドではなく「不安定」としてマークを付けることができ
    ますhttps://wiki.jenkins-ci.org/display/JENKINS/Text -ファインダー+プラグイン

于 2012-11-05T14:19:39.133 に答える
0

上記の回答で指定されているようにプラグインを追加Slavし、セクションに次のスクリプトを記述しましたRun buildstep before SCM runs

instance_count=`ps x | grep -c 'ssh -L 9898:some_server.com:9898 user@another_server.com'`
if test $instance_count -lt 2 #two instances mean that one is of grep and other is the tunnel
then
    ssh -L 9898:some_server.com:9898 -t -t user@another_server.com&
fi

これで、「」をクリックするたびにBuild now、トンネルが最初に作成され、更新がチェックインされ、ビルドが完了しました。ただし、残念ながら、この場合、ポーリングは機能しません。

于 2012-11-05T10:55:07.473 に答える