package hudson.plugins.emotional_hudson; import hudson.Extension; import hudson.Launcher; import hudson.model.*; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; import hudson.tasks.Notifier; import hudson.tasks.Publisher; import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; import java.io.IOException; public class EmotionalHudsonPublisher extends Notifier { public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { /* // ここはテスト用 DESCRIPTOR.counter++; int value = DESCRIPTOR.counter % 5; switch (value) { case 0: build.setResult(Result.FAILURE); break; case 1: build.setResult(Result.UNSTABLE); break; case 2: build.setResult(Result.ABORTED); break; case 3: build.setResult(Result.NOT_BUILT); break; default: } */ build.getActions().add(new EmotionalHudsonAction(build.getResult())); return true; } public Action getProjectAction(Project project) { return new EmotionalHudsonAction(); } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.BUILD; } @Override public BuildStepDescriptor<Publisher> getDescriptor() { return DESCRIPTOR; } @Extension public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl(); public static final class DescriptorImpl extends BuildStepDescriptor<Publisher> { // public static int counter = 0; DescriptorImpl() { super(EmotionalHudsonPublisher.class); load(); } public String getDisplayName() { return "Emotional Hudson"; } @Override public boolean configure(StaplerRequest req, JSONObject formData) throws FormException { save(); return super.configure(req, formData); } @Override public Publisher newInstance(StaplerRequest req, JSONObject formData) throws FormException { return new EmotionalHudsonPublisher(); } @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } } }