【问题标题】:Jenkins execute action after delete buildJenkins在删除构建后执行操作
【发布时间】:2015-10-06 21:34:52
【问题描述】:

在 Jenkins 上(由用户或自动)删除构建后,我需要执行一些操作。

其实我需要以下:

  1. 发送带有已删除构建信息的 http 请求。
  2. 删除远程位置的构建工件。

关于#2:我使用 Artifact Deployer 插件来部署构建,但由于问题 https://issues.jenkins-ci.org/browse/JENKINS-26109 在删除构建后,构建不会在远程位置删除。

无论如何,我如何在删除构建时做些什么?也许我必须编写脚本或创建插件?

【问题讨论】:

    标签: jenkins jenkins-plugins


    【解决方案1】:

    有一个类 RunListener 有方法 onDeleted。

    做这样的事情:

    import hudson.model.Run;
    import hudson.model.listeners.RunListener;
    import hudson.Extension;
    
    @Extension
    public class DeleteListener extends RunListener<Run> {
          @Override
          public void onDeleted(Run r) {
             // your code here
          }
    }
    

    此外,请记住,如果您删除作业 - 事件 onDeleted will not be fired

    【讨论】:

    • 我尝试了您的代码,但总是以错误告终:org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: DeleteListener.main() is applicable for argument types: ([Ljava.lang.String;) values: [[]] Possible solutions: wait(), wait(long), all(), any(), find(), wait(long, int)
    【解决方案2】:

    我不认为插件是必需的。 您可以为此编写一个 cron 作业,它会不断检查构建目录的内容是否有任何更改。

    $JENKINS_HOME/jobs/your_job_here/builds/
    

    如果删除任何文件夹,则意味着手动/自动删除构建。然后,您可以触发邮件或执行您想做的任何任务,因为现在您知道构建已被删除。

    【讨论】: