0

jenkins を使用して 2 つのジョブ (A と B) を構築しています。ジョブ A によって特定のファイル F が更新されたときに、ジョブ B をトリガーしたいと考えています。ジョブ A が完了してから約 10 分後に F が更新されます (ジョブ B が存在するリモート サーバーにレプリケーション サービスがファイルをコピーするのに 10 分かかります)。実行します)

したがって、B は A のダウンストリーム ジョブですが、A が終了するとすぐに B をトリガーすることはできません。その時点までに、B が実行されるサーバーで F が更新されていないためです。現在、B で FS トリガー プラグインを使用して F を毎分チェックしていますが、うまく機能しているようです。しかし、24 時間常に F をチェックし続けるのは単なるオーバーヘッドです。代わりに、ジョブ A が終了したときにファイル F のファイル システムのポーリングを B に開始してもらいたいので、レプリケーションが完了するまで約 10 分間ポーリングし、その後ビルドを開始します。

Jenkinsでこのようなことを達成する方法を知っている人はいますか? 簡単に言えば、アップストリーム ジョブがダウンストリーム ジョブでファイル システム ポーリングをトリガーする方法を教えてください。

よろしく、 -サフィ

4

2 に答える 2

1

回答ありがとうございます。独自の bash スクリプトを作成し、ジョブ B の最初の行でそれを呼び出すことになりました。このスクリプトは、ファイル F を M 分間ポーリングし、SUCCESS 終了ステータスで終了します (これにより、ジェンキンスはビルドを続行します)。 M 分以内にファイルが見つからない場合は、エラーが発生するか終了します (これにより、ジェンキンスはビルドを終了します)。だから、このようなものは私のジェンキンスの仕事Bにあります:-

./myscript.sh -f file_to_poll -m minutes_to_poll_for

上記の行は、成功または失敗のいずれかを返します

./start_build

于 2013-03-08T15:23:49.890 に答える
0

ジョブ B でScriptTriggerを使用して、スクリプトでファイル F を監視することをお勧めします。5分ごとにポーリングできます。

F を以前の状態と比較し (状態をコピーまたはタイム スタンプとして保持する)、変更が見つかった場合にジョブ B をトリガーするシェルまたはバッチ スクリプトを記述します。

これが役立つことを願っています。

于 2013-03-07T14:13:34.597 に答える