적어도 하나의 방법은 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;
}
}
고마워요! 우리는 그 일을 잠시 후 돌아 보았습니다. 그러나 이것으로 또 다른 균열을 잡을 것입니다. – sybkar