我正在尝试编写一个插件,以防止基于某些条件发生构建。我已经尝试将条件检查放在prebuild
方法中(被覆盖),但从我所看到的,我希望从中完成的最好的是将构建状态设置为Result.ABORTED
或{{ 1}}。
有谁知道如何
从构建队列中删除构建而没有任何历史记录(即通过预构建),
或者
使用什么方法来确定是否应该允许构建?
答案 0 :(得分: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;
}
}