package org.paylogic.jenkins.gatekeeper; import hudson.EnvVars; import hudson.Extension; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; import hudson.model.BuildListener; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.Builder; import lombok.extern.java.Log; import org.kohsuke.stapler.DataBoundConstructor; import org.paylogic.jenkins.LogMessageSearcher; import org.paylogic.jenkins.advancedscm.AdvancedSCMManager; import org.paylogic.jenkins.advancedscm.SCMManagerFactory; import java.io.PrintStream; import java.util.logging.Level; /** * Created by bubenkoff on 20.12.13. */ @Log public class GatekeeperPush extends Builder { @DataBoundConstructor public GatekeeperPush() { } @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) { PrintStream l = listener.getLogger(); l.println("----------------------------------------------------------"); l.println("-------------------- Gatekeeper push ---------------------"); l.println("----------------------------------------------------------"); try { return this.doPerform(build, launcher, listener); } catch (Exception e) { log.log(Level.SEVERE, "Exception during Gatekeeeper push.", e); l.append("Exception occured, build aborting...\n"); LogMessageSearcher.logMessage(listener, e.toString()); return false; } } private boolean doPerform(AbstractBuild build, Launcher launcher, BuildListener listener) throws Exception { /* Set up enviroment and resolve some variables. */ AdvancedSCMManager amm = SCMManagerFactory.getManager(build, launcher, listener); EnvVars envVars = build.getEnvironment(listener); String branches_to_push = envVars.get("BRANCHES_TO_PUSH", ""); amm.push(branches_to_push.split(",")); LogMessageSearcher.logMessage(listener, "Gatekeeper push is done."); return true; } @Override public DescriptorImpl getDescriptor() { return (DescriptorImpl)super.getDescriptor(); } @Extension public static final class DescriptorImpl extends BuildStepDescriptor<Builder> { @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } @Override public String getDisplayName() { return "Perform Gatekeeper push."; } public DescriptorImpl() { super(); load(); } } }