3

Jenkinsジョブの実行を開始することは可能ですかいくつかの設定を開始できなかった場合、「親」ジョブはすべてが開始されるまで待機します同期?Jenkinsジョブを同時に起動する

ジョブを開始するためのプラグインはすでにMatrix ProjectPipelineですが、すべての設定を同時に開始できるようになるまで実行をフリーズする可能性があります。

+0

すべての設定を同時に開始できるようになるまで、_freezeの実行が意味することをより正確に説明できますか?すべてのブランチが同時に開始され、すべてのエグゼキュータスロットが同時に使用可能になるのを待っていることを意味しますか?どうして? –

+0

@ JesseGlick私はいくつかのノードまたはエグゼキュータを横断して実行される分散システムをテストしたいと思います。これを行うには、Jenkinsにビルドを制御し、デッドロックが発生した場合にタイムアウトのしきい値を設定したいと思います。おかげさまで – luka5z

答えて

1

は、パイプラインでは、あなたは、それは一般的に良いアイデアではありません(未テスト)

def count = 0 
parallel a: { 
    node { 
    count++ 
    waitUntil {count == 3} 
    sh 'make CONFIG=a' 
    } 
}, b: { 
    node { 
    count++ 
    waitUntil {count == 3} 
    sh 'make CONFIG=b' 
    } 
}, c: { 
    node { 
    count++ 
    waitUntil {count == 3} 
    sh 'make CONFIG=c' 
    } 
} 

ような何かを行うことができます。

+1

あなたの提案に基づいて私は単純なパイプライン[スクリプト](https://github.com/luka5z/jenkinsci-workflow-plugin-examples/blob/master/jobs/parallel-waituntil.groovy)を書いています。すべてのノードが使用可能になるまで待機するだけでなく、タイムアウトセクションの周りにもノードをラップします。 – luka5z

+0

ニース。ヒント:単純なJavaの 'InterruptedException'を' catch'することでおそらく十分である場合、 'FlowInterruptedException'をインポートする必要はありません。おそらく 'manager.build.doStop()'(つまり、 'currentBuild.rawBuild.doStop()')を 'parallel'ステップに' failFast:true'を追加すると、sandboxに優しい 'throw e'で置き換えることができます。 –

0

私はthisがあなたを助けてくれるかもしれないと思います。あなたが効果的に3つのすべてのノードが同時にロックするのを待つデッドロックすることができますので、

関連する問題