1

jenkins ワークフローの並列ステップを試しています。現在、私のフローは(本質的に)次のようになっています。

parallel 'Deploy-A-Machine': {
    node {
        input 'Shall we deploy the A machine?'
        step([$class: 'DeployMachineBuilder', deploymentName: aPodName])
    }
}, 'Deploy-B-Machine': {
    node {
        input 'Shall we deploy the B machine?'
        step([$class: 'DeployMachineBuilder', deploymentName: bPodName])
    }
}

両方の入力が異なるエグゼキューターで実行されているように表示されますが、両方で「続行」をクリックすると、最初のデプロイのみが実際に開始されます。デプロイは、レガシー ジョブ用に作成され、最小限のワークフローに変換されたカスタム プラグインとして実行されます。Executor を待っているという明確なメッセージは表示されません。単にデプロイが開始されないだけです。1回目が終わるとすぐに2回目が始まります。

並列ステップで両方を実行できるようにする前に、DurableTask (または別のもの?) を実装する必要がありますか? これまでの私の回心は非常に軽いものだったので、より真の回心を試す時が来たのかもしれません.

4

1 に答える 1

2

あなたが書いDeployMachineBuilderたものであると仮定すると、実際、そのメソッドはその期間中ワークフロー仮想マシンを単純にブロックします: Groovy インタープリターは共同マルチタスクを使用します。SimpleBuildStepperform

可能な場合、最も簡単な解決策はsh、カスタム ビルダーではなくステップを使用することです。これは、スレーブの切断や Jenkins の再起動後も存続し、段階的な進行状況を表示し、parallel. JENKINS-26055は、カスタムの「永続的な」ステップを定義するためのより便利な方法を提供します。JENKINS-25879は、耐久性のないステップを定義するためのより便利な方法を提供しますが、少なくともネイティブ スレッドのブロックを回避します (したがって、動作が改善されparallel、増分的にログが記録されます)。

ところで、あなたのサンプル スクリプトでは、inputステップをブロックの外に移動することをお勧めnodeします。ユーザーの承認を待っている間 (おそらく無期限に) エグゼキュータを占有しても意味がありません。

于 2015-07-21T14:08:59.763 に答える