2012-02-29 7 views
5

My Jenkinsサーバーには、2つのジョブAとBが設定されています。従属ジョブ間で実行開始を設定するにはどうすればよいですか?

ジョブAは、サブバージョンの変更によって起動され、ユニットテストを実行し、成功すると、WARを作成して別の環境にデプロイします。

ジョブAが成功すると、ジョブBがトリガーされます。このジョブは、デプロイされたWARに対してテストを実行します。

問題は、デプロイメントプロセスに時間がかかり、ジョブBが起動してWARを使用しようとしたときにWARが準備完了になっていないことです。

私は、WARが起動して実行されるまで、ジョブBを遅らせる方法についてアイデアを探しています。

ジョブBがトリガーされてx秒間待機すると、方法はありますか?もし私がそれを避けることができれば、私は本当にそれをジョブBのテストに入れたくありません。

おかげ

+0

ジョブBは、ジョブAによって生成された戦争(lastSuccessfulBuildの成果物に格納される)に基づいてデプロイメントを行うことができます。 –

答えて

2

待機するジョブの道は間違いあり - ちょうど最初のシェルビルドステップにsleepを置きます。代わりに、 'Quiet period'を設定することもできます。これは、ビルドを作成するときの高度なプロジェクトオプションです。

しかし、これは、他のアプローチが失敗した場合にのみ使用される救済策です。次のように試してみてください.Jenkinsがアクセス可能なファイルにタッチする直前にデプロイメントプロセス(ジョブAが起動する)を行う方法がある場合は、FSTrigger Pluginを使用できます。そこでユースケース3を参照してください。

+0

利用可能なオプションの概要、ありがとうございます。当面は眠りについたことがありますが、FSTrigger Pluginを見ると、この状況や他の状況には本当に便利です。 – FinalFive

1

この作業を行う最も信頼できる方法は、展開が成功するまでジョブAを完了させないことです。デプロイされたWebアプリケーションのURLからの有効な応答をテストします。 This blog postには、これを行う方法の1つが記載されています。