Как минимум, одним из способов является расширение QueueTaskDispatcher.С его помощью вы получаете работу и узел и можете заблокировать его сборку на этом узле в то время.Конечно, вы можете не заботиться об узле, а просто заблокировать работу всегда.Этот метод будет периодически вызываться для запланированных заданий, когда Дженкинс пытается найти узел для его сборки.
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;
}
}