【问题标题】:How to prevent a build from plugin code in Jenkins如何防止从 Jenkins 中的插件代码构建
【发布时间】:2011-12-14 16:49:03
【问题描述】:

我正在尝试编写一个插件,以防止基于某些条件发生构建。我已经尝试将条件检查放在prebuild 方法中(被覆盖),但据我所知,我希望从那里完成的最好的工作是将构建状态设置为Result.ABORTEDResult.FAILURE

有人知道怎么做吗

  • 从构建队列中删除没有任何历史的构建(即通过预构建),

  • 使用什么方法来确定是否应允许构建?

【问题讨论】:

    标签: build jenkins hudson hudson-plugins


    【解决方案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;
        }
    }
    

    【讨论】:

    • 谢谢!我们不久前就解决了这个问题,但我会再尝试一下。
    猜你喜欢
    • 2022-06-10
    • 2015-11-14
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2017-12-20
    相关资源
    最近更新 更多