package com.nirima.jenkins.plugins.docker.builder; import hudson.DescriptorExtensionList; import hudson.Extension; import hudson.FilePath; import hudson.Launcher; import hudson.model.*; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.Builder; import jenkins.tasks.SimpleBuildStep; import org.kohsuke.stapler.DataBoundConstructor; import java.io.IOException; import java.io.Serializable; /** * Builder that contains one of the possible "option" control step. * @author magnayn */ public class DockerBuilderControl extends Builder implements Serializable, SimpleBuildStep { public final DockerBuilderControlOption option; @DataBoundConstructor public DockerBuilderControl(DockerBuilderControlOption option) { this.option = option; } @Override public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException { option.execute(run, launcher, listener); run.save(); } @Override public DescriptorImpl getDescriptor() { return (DescriptorImpl) super.getDescriptor(); } @Extension public static class DescriptorImpl extends BuildStepDescriptor<Builder> { @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } @Override public String getDisplayName() { return "Start/Stop Docker Containers"; } public static DescriptorExtensionList<DockerBuilderControlOption,DockerBuilderControlOptionDescriptor> getOptionList() { return DockerBuilderControlOptionDescriptor.all(); } } }