package com.nirima.jenkins.plugins.docker.publisher; import com.github.dockerjava.api.exception.DockerException; import com.nirima.jenkins.plugins.docker.builder.DockerBuilderControlOptionStopAll; import hudson.Extension; import hudson.Launcher; import hudson.model.*; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; import hudson.tasks.Publisher; import hudson.tasks.Recorder; import org.kohsuke.stapler.DataBoundConstructor; import java.io.IOException; import java.io.Serializable; import java.util.logging.Logger; /** * Post-build step that allow stop all matched container * * @author magnayn */ public class DockerPublisherControl extends Recorder implements Serializable { public final boolean remove; @DataBoundConstructor public DockerPublisherControl(boolean remove) { this.remove = remove; } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.BUILD; } @Override public DescriptorImpl getDescriptor() { return (DescriptorImpl)super.getDescriptor(); } @Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { try { new DockerBuilderControlOptionStopAll(remove).execute(build, launcher, listener); } catch (DockerException e) { throw new RuntimeException(e); } return true; } @Extension public static class DescriptorImpl extends BuildStepDescriptor<Publisher> { @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } @Override public String getDisplayName() { return "Stop Docker Containers"; } } }