2011-10-26 7 views
0

私はアプリケーションを構築する一連の仕事を持っています。このチェーンを1と呼びましょう。Jenkins:実行する必要があるジョブを決定するにはどうすればよいですか?

この手順を他のジョブチェーン(チェーン2)の中央にも含めたいと思います。私は、チェーン1の最後の仕事は、私は私だけのオリジナルチェーン1

J1 
    | 
J2 J2 
| | 
J3 J3 
    | 
    J4 

私はしたくないを構築したいとき、構築すべきでない明白な制御することはできません、次の仕事をし、取得することを行う場合J2とJ3を複製することはできますが、これは不可能ですね。

答えて

0

あなたの説明はありません。

しかし、痛みはそれほど悪くはありません。 「新しいジョブ」ダイアログから既存の別のジョブをコピーすることができます.J2とJ3をコピーし、J3の「ビルド・アフター」タグを変更するだけです。両方のジョブセットが同じビルドページに表示されないようにするには、ジョブをフィルタリングするためのプラグインがあります。

+0

これはまさに私が避けたいものです。私たちの仕事は、すべてかなり複雑で、多くの依存関係があります。このシナリオのためにそれらを複製することは、私たちを保守地獄に連れて来るでしょう... – andreas

+0

私は参照してください。あなたはこれにユースケースを提供できますか?メンテナンスを避けたいと思っているのは分かりますが(誰には分からないのですか?)、なぜ部分的なアクションチェーンを実行できるのかという大きな問題があるかどうかを理解することは簡単でしょう。 – Kane

+0

短鎖のコンパイル出力は、それ自身のものであるか、後で長鎖でのジョブの前提条件となります。これが完全なコピーであるので、私はそれを避けたいです。 – andreas

1

私はstackoverflow.com上、ここで他の回答に触発された解決策が見つかりました:読み出すため

echo call_conditional_next_job = true > c:\temp\build.properties 

:先行ジョブでJenkins - conditions between build steps

は、私は、Windowsのバッチジョブと一時ファイルを書き込みますプロパティファイルといくつかの環境変数を設定する私は "Jenkins Environment Injector Plug-in"を使用します。後でチェーン内でいくつかのジョブを追加しました。次のWindowsバッチジョブを追加しました:

チェーン内のいくつかのジョブ "Jenkins Environment Injector Plug-in"を使用してプロパティファイルを読み上げます。そして、同じ仕事で私は、「条件付き-次のジョブ」ジェンキンスジョブを開始する条件には、次のWindowsバッチジョブを使用します。

IF "%call_conditional_next_job%"=="true" wget http://localhost:8080/job/conditional-next-job/build?delay=0sec 
IF NOT "%call_conditional_next_job%"=="true" echo "do not call conditional-next-job." 

1が下流に環境変数を送信するために、よりエレガントな方法を見つけた場合...それは知っていいだろう。

0

J1とJ3が共通のフィンガープリンティングされたファイルを共有する場合、この作業を行う方法があるかもしれません。

  1. ビルドの最後にJ2を呼び出すようにJ1ジョブを変更します(順番にJ3を呼び出します)。
  2. J3のダウンストリーム完了が成功するとトリガーするプロモーションプロセスを持つようにJ1ジョブを変更します。プロモーションプロセスのアクションとして、別のプロジェクトにトリガービルドを追加し、ビルドするプロジェクトとしてJ4を指定します。