5

Jenkins または Hudson を使用して、フォークとジョイン ポイントを含むビルドのパイプラインを作成したいと思います。次に例を示します。

     job A
    /      \
 job B    job C
   |        |
 job D      |
    \      /
     job E

このような任意の直並列グラフを作成し、スレーブが利用可能なときはいつでも B/D と C を並列に実行するスケジューリングの自由を Jenkins に任せたいと思います。

Join プラグインは、B が実行されるとすぐに参加します。Build Pipeline Plugin は fork/join ポイントをサポートしていません。Throttle Concurrent Builds Plugin (または非推奨の Locks & Latches Plugin) でこれが可能かどうかは不明です。もしそうなら、私は方法を理解できませんでした。解決策の 1 つは、Apache Ivy でビルドの依存関係を指定し、Ivy プラグインを使用することです。ただし、私のジョブはすべて Makefile C/C++/シェル スクリプト ジョブであり、これが可能かどうかを検証する Ivy の経験はありません。

Jenkinsで並列ジョブとその依存関係を指定する最良の方法は何ですか?

4

2 に答える 2

7

このニーズを満たすBuild Flow プラグインがあります。並列ジョブを指定するための DSL を定義します。あなたの例は次のように書かれているかもしれません:

build("job A")
parallel (
    {
        build("job B")
        build("job D")
    },
    {
        build("job C")
    }
)
build("job E")

私はそれを見つけたばかりで、まさに私が探していたものです。

于 2012-06-07T06:19:33.123 に答える
2

あなたのために働くかもしれない1つの解決策があります。すべてのビルドは、単一のジョブで始まり、各チェーンの最後にある明確な一連のジョブで終わる必要があります。この図では、「ジョブA」が開始ジョブ、ジョブCとDが終了ジョブになります。

ジョブAにフィンガープリントファイルを作成してもらいます。次に、ジョブAは、この例ではB/DとCのビルドの複数のチェーンを開始できます。また、ジョブAで、プロモーションプラグインを介してプロモーションを追加します。このプラグインの基準は、連続するジョブ(この場合はCとD)の正常な完了です。プロモーションの一部として、最後のジョブ(この場合はジョブ)のトリガーを含めます。 E.これは、 ParameterizedTriggerPluginを使用して実行できます。次に、昇進基準にリストする各ジョブも同じファイルにフィンガープリントを付け、同じフィンガープリントを取得するようにします。コピーアーティファクトプラグインを使用して、毎回まったく同じファイルを取得できるようにします。

于 2012-01-30T16:04:47.457 に答える