10

Jenkins Join Plugin を使用すると、すぐ下のすべてのジョブが完了した後にジョブを実行できます。

しかし、直近のジョブだけでなく、すべてのダウンストリーム ジョブが完了した後にジョブを実行するように構成するにはどうすればよいでしょうか?

この図は、私が期待するジョブ トリガー フローを示しています。

                           A
                           |
                    --+----+------+--
                      |           |
                      v           v
                      B           C
                      |           |
     --+--------+-----+---+--     |
       |        |         |       |
       v        v         v       |
       D        E         F       |
       |        |         |       |
       v        |         |       |
       G        |         |       |
       |        |         |       |
    ---+--------+----+----+-------+--
                     |
                     v
                     J

ジョブ A に Join Trigger を設定して、最後のジョブ J をトリガーします。ただし、ジョブ J は、B と C が終了すると開始され、ジョブ D、E、F、および G を待機しません。

この回答とそのコメントでは、パスは複数のジョブの深さになる可能性があり、フィンガープリントを正しく使用する必要があると述べています。しかし、私はそれを機能させる方法を理解できません。

4

2 に答える 2

7

誰かが簡単な方法を探している場合は、JobFanIn プラグインを使用してください。このプラグインを使用すると、C、E、F、および G がビルドされて安定したら、ジョブ J にトリガーを設定できます

于 2016-03-14T06:54:58.613 に答える
5

Join プラグインは、すべてが依存関係の「ひし形」に分割されている場合にのみ機能します。つまり、単一の開始ジョブ、1 つ以上のダウンストリーム ジョブ、ただし 1 レベルの深さ (D と G はダイアグラムで 2 レベルの深さ) であり、その後に 1 つの依存関係が続きます。入社した。あなたの依存構造は、そのひし形のパターンに従っていません。

この特定の状況では、Promoted Builds Pluginを使用します。ジョブ A を設定して、トリガーされたときにジョブ J を実行するプロモーションを設定します。そのプロモーションのトリガーを、B、C、D、E、F、G の正常な完了にします。または、最小化したい場合は、G、EF、C のようにします。フィンガープリンティングが正しく設定されていることを確認してください。

フィンガープリントの場合、ジョブ A でファイルを生成 (または既存のファイルを選択) します。それをアーティファクトしてフィンガープリントします。次のすべてのジョブ BG で、CopyArtifactプラグインを使用してそのファイルをジョブに取得し、そこでもフィンガープリントを取得します。

于 2012-09-04T13:50:16.613 に答える