2011-12-14 13 views
1

特定の条件に基づいてビルドが行われないようにするプラグインを作成しようとしています。私はprebuildメソッド(オーバーライド)に条件付きチェックを入れようとしましたが、私が見ることのできるところからは、ビルドステータスをResult.ABORTEDまたはResult.FAILUREに設定することができます。Jenkinsのプラグインコードからのビルドを防ぐ方法

誰もがいずれかの

  • は何方法があり、それは(事前に作成を通じて、すなわち)すべての履歴がなくても、

    OR

  • をビルドキューからのビルドを削除する方法を知っていますビルドを許可する必要があるかどうかを判断するために使用されますか?

答えて

1

少なくとも1つの方法は、QueueTaskDispatcherを拡張することです。それを使用すると、ジョブとノードが取得され、その時点でそのノード上に構築されないようにブロックできます。もちろん、ノードは気にせず、常にジョブをブロックするだけです。このメソッドは、Jenkinsがノードを作成しようとしているスケジューリングされたジョブに対して定期的に呼び出されます。

import hudson.Extension; 
import hudson.model.AbstractProject; 
import hudson.model.Node; 
import hudson.model.Queue.BuildableItem; 
import hudson.model.queue.CauseOfBlockage; 
import hudson.model.queue.QueueTaskDispatcher; 

@Extension 
public class MyTaskDispatcher extends QueueTaskDispatcher { 

    @Override 
    public CauseOfBlockage canTake(Node node, BuildableItem item) { 

     // only care about AbstractProject tasks 
     if (!(item.task instanceof AbstractProject<?, ?>)) return null; 

     AbstractProject<?, ?> proj = (AbstractProject<?, ?>) item.task; 

     if(!proj.getName().contains(node.getNodeName()) { 
      return new CauseOfBlockage.BecauseNodeIsBusy("Job name does not contain node name"); 
     } 
     return null; 
    } 
} 
+0

ありがとうございます!私たちはしばらく前にそれを取り組んだが、これで別の亀裂を取ります。 – sybkar

関連する問題