32

データベースを共有する 2 つの Jenkins プロジェクトがあります。それらを同時に実行してはなりません。厳密に言えば、非並行性以外に特に依存関係はありませんが、現時点では、一方を他方の「下流」で実行することで、この制約を部分的に管理しています。これはほとんどの場合に機能しますが、常に機能するとは限りません。2 番目の実行中にソース管理の変更が発生すると、最初のものが再び起動し、同時に実行され、おそらく両方とも惨めに失敗します。

これは「特定の Jenkins ジョブが同時に実行されないようにする方法」に似ていますが、同一ではありません。違いは、「スレッド数」の問題がないことです.2つの(異なるプロジェクトの)ビルドがストンプした場合でも、特定のプロジェクトのスレッドを一度に最大1つしか実行していませんお互い。これは、そのスレッドのいくつかの提案をすべて除外しているようです。

4

4 に答える 4

26

Locks and Latches プラグインが問題を解決するはずです。ロックを作成し、両方のジョブが同じロックを使用するようにします。これにより、ジョブが同時に実行されなくなります。

  1. 「Jenkins の管理: プラグインの管理」でプラグインをインストールします。
  2. 「Jenkins の管理: システムの構成」でロックを定義 (名前を指定) します。
  3. 除外に参加したいジョブごとに、
    1. 「:設定:ビルド環境」で、「ロック」にチェックを入れ、
    2. ドロップリストからロック名を選択します。
于 2012-04-12T04:58:33.003 に答える
12

ロック可能なリソース プラグイン。シンプルで、2016 年 5 月にうまく機能しています。

プラグインをインストールします。[Jenkins の管理] > [システムの構成] で、ロック可能なリソース マネージャーに移動します。
[ロック可能なリソースの追加] を選択します。フィールドの値を入力してください: 名前 保存をクリックします。警告: [名前] フィールドにスペースを入力しないでください。

Jenkins > job_name > Configure > General で、チェックボックスを選択します。このビルドにはロック可能なリソースが必要です。フィールドの値に名前を入力してください: リソース。

ビルドを開始します。ビルド番号の下で、ロックされたリソースを選択します。次のように表示されるはずです:このビルドは次のリソースをロックしました: resource_name - resource_description

同じリソースを使用する別のビルドを開始します。Jenkins のステータス/メニューに Build Queue が表示され、ジョブ名が表示されます。ホバー テキストには、 Started by、 Waiting for resources resources_list、 Waiting for timeが表示されます。

(リソースタグ/ラベルも使用できます)

「このビルドにはロック可能なリソースが必要です」が表示されない一部のユーザーに問題があるように見えるため、ジョブ構成ページのスクリーンショットを追加します。** チェックボックスが選択されていない場合、「[_] このビルドにはロック可能なリソースが必要です」のみが表示されます。 ここに画像の説明を入力

于 2016-05-11T15:08:17.283 に答える
5

編集: 以下の情報は 2014 年 4 月 10 日現在のものです。

除外プラグイン、https: //wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin 同じリソース (テスト データベースなど) を使用するビルドがほとんどない場合に非常に役立ちます。このリソースを使用してすべてのジョブの構成を更新するだけで済みます。その結果、ジョブが並行して実行されることはなく、他のジョブが完了するのを待ちます。

から取得: http://www.kaczanowscy.pl/tomek/2012-07/jenkins-plugins-part-iii-towards-continuous-delivery

このプラグインは、2 つ以上のジョブが並行して実行されるのをブロックします。
テストするには、job1 に対してこれを行います

  1. 構成、設定
  2. [ビルド環境] で、[除外を管理するリソースを追加] をオンにします。
  3. 次に、追加 -> 新しいリソース -> 名前 -> ロック
  4. [ビルド] -> [ビルド ステップの追加] の下
  5. クリティカル ブロックの開始
  6. ビルドステップを追加 -> 追加したいものを追加します。
  7. ビルドステップを追加 -> クリティカルブロック終了
  8. 上記の手順を job2 に対して繰り返します。同じロック名「lock」を使用していることを確認してください。
  9. 両方のジョブを同時に手動でビルドします。
  10. jenkins -> Exclusion administration で実行の進行状況を監視します。
于 2014-04-10T23:23:15.440 に答える
1

1 December 2021
Use Build Blocker plugin, Install from Manage Jenkins > Plugin Manager Build Blocker plugin install using Jenkins UI

For example, you have two pipelines React-build and React-tests:
Go to React-build -> Configure -> Block build
if I don't need React-tests to run concurrently with the current React-build job, add it in the blocking list,

Regex expressions can also be used, i.e. to avoid concurrent builds for all projects starting with React-, add React-.* to the list,

Replace React-tests with any pipeline-name you want not to run parallel, with global or node level options, Blocking Builds Setup

When tried to run any blocked jobs together with configured React-build job, it gets moved to pending state, pending concurrent builds

于 2021-12-01T10:00:58.270 に答える