package org.jenkinsci.plugins.ghprb.extensions.comments;
import hudson.Extension;
import hudson.model.Result;
import hudson.model.Run;
import hudson.model.TaskListener;
import org.jenkinsci.plugins.ghprb.Ghprb;
import org.jenkinsci.plugins.ghprb.GhprbTrigger;
import org.jenkinsci.plugins.ghprb.extensions.GhprbCommentAppender;
import org.jenkinsci.plugins.ghprb.extensions.GhprbExtension;
import org.jenkinsci.plugins.ghprb.extensions.GhprbExtensionDescriptor;
import org.jenkinsci.plugins.ghprb.extensions.GhprbGlobalExtension;
import org.jenkinsci.plugins.ghprb.manager.GhprbBuildManager;
import org.jenkinsci.plugins.ghprb.manager.configuration.JobConfiguration;
import org.jenkinsci.plugins.ghprb.manager.factory.GhprbBuildManagerFactoryUtil;
import org.kohsuke.stapler.DataBoundConstructor;
public class GhprbPublishJenkinsUrl extends GhprbExtension implements GhprbCommentAppender, GhprbGlobalExtension {
@Extension
public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
private final String publishedURL;
@DataBoundConstructor
public GhprbPublishJenkinsUrl(String publishedURL) {
this.publishedURL = publishedURL;
}
public String getPublishedURL() {
return publishedURL;
}
public String postBuildComment(Run<?, ?> build, TaskListener listener) {
StringBuilder msg = new StringBuilder();
msg.append("\nRefer to this link for build results (access rights to CI server needed): \n");
msg.append(generateCustomizedMessage(build));
msg.append("\n");
return msg.toString();
}
public boolean addIfMissing() {
return false;
}
private String generateCustomizedMessage(Run<?, ?> build) {
GhprbTrigger trigger = Ghprb.extractTrigger(build);
if (trigger == null) {
return "";
}
JobConfiguration jobConfiguration = JobConfiguration.builder()
.printStackTrace(trigger.getDisplayBuildErrorsOnDownstreamBuilds()).build();
GhprbBuildManager buildManager = GhprbBuildManagerFactoryUtil.getBuildManager(build, jobConfiguration);
StringBuilder sb = new StringBuilder();
sb.append(buildManager.calculateBuildUrl(publishedURL));
if (build.getResult() != Result.SUCCESS) {
sb.append(buildManager.getTestResults());
}
return sb.toString();
}
@Override
public DescriptorImpl getDescriptor() {
return DESCRIPTOR;
}
public static final class DescriptorImpl extends GhprbExtensionDescriptor implements GhprbGlobalExtension {
@Override
public String getDisplayName() {
return "Add link to Jenkins";
}
public boolean addIfMissing() {
return false;
}
}
}