2017-02-18 3 views
0

複数のSCMジョブがあります。ジョブAはジョブBをトリガし、ジョブCはジョブDをトリガします。ジョブDにトリガをかける代わりにジョブCにチェックインがあると、ジョブCが実行中にジョブCが完了した後、ジョブAがトリガされ、ジョブDがキューに入ります。ジョブAが完了すると、ジョブBが待ち行列に入っている間にジョブDがトリガされます。これはバグですか?ジョブCは、上流のジョブのSCMの変更に関係なくジョブDをトリガーすると予想します。この問題をどうやって解決しますか?Jenkinsはビルドキューをキャンセルします

答えて

0

はいこれは、エグゼキュータを1人しか持たない場合を想定しています。まずいくつかの用語:

  • キュー、これは全ての執行が忙しい通常ので、それが実行される前のビルドがある場所です。
  • トリガーは、ジョブのビルドがキューに追加されることを意味します。
  • 実行者は、最初のビルドをキューに入れてビルドします。

    1. Cは、トリガーキューにC#1を構築追加し、
    2. Aがトリガーとビルド追加された実行は何もありませんので、ビルドがすぐに開始されます。今度は、タイムラインをやらせる

A1のみをキューに入れます。実行中の唯一のエグゼキュータはC#1をビルドしているため、

  • です。ビルドC#1はその完了に近づき、最後にビルドDをトリガーしてD#1をビルドします。ビルドD#1は、ビルドA#1の直後にキューに入れられます。
  • C#1が終了すると、エグゼキュータはキュー内の次の項目を取ります。これはA#1になります。
  • #それは
  • 最後にB#1が
  • が内蔵されているキュー内の最初のものであるので、D#1
  • D#1が構築された直後に、キューにB#1を加算として1終了

    あなたがそうすることができるように、エグゼキュータは常にキューに入っていたビルドを最長で使います。たとえば、Priority Sorter Pluginを使用してこの優先度を変更する方法がある場合は、特定のジョブの優先度を高く設定することができます。ジョブBとDの優先度を高くする必要があります。

  • +0

    ええ、 1つはいつでも実行されています。私も上流の下流のジョブをブロックしようとしましたが、まだ助けにはなりませんでした。 – varun7447

    +0

    私は仕事AとBがジョブCとDとは完全に独立しているので、それは奇妙です。次に、彼らは互いに奇妙な、互いに独立して構築する必要があります... cが構築されているとき、キューにAがありますか?そうであれば、なぜジョブAのページに行きビルド履歴をチェックしてビルドしていないのかを知ることができます。 –

    +0

    混乱して申し訳ありませんが、4つのジョブはすべてリンクされています。 SCMの変更がない場合、注文は正常に実行されています。私が気づいた問題は、アップストリームまたはダウンストリームジョブでSCMが変更された場合にのみ発生します。 SCMによりジョブが優先されました。 – varun7447

    関連する問題