package hudson.plugins.jira.pipeline; import java.io.IOException; import javax.annotation.Nonnull; import org.jenkinsci.plugins.workflow.steps.AbstractStepDescriptorImpl; import org.jenkinsci.plugins.workflow.steps.AbstractStepImpl; import org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution; import org.jenkinsci.plugins.workflow.steps.StepContextParameter; import org.kohsuke.stapler.DataBoundConstructor; import com.google.inject.Inject; import hudson.Extension; import hudson.model.Run; import hudson.model.TaskListener; import hudson.plugins.jira.JiraSession; import hudson.plugins.jira.JiraSite; import hudson.plugins.jira.Messages; /** * Simple add comment step. * * @author jan zajic */ public class CommentStep extends AbstractStepImpl { public final String issueKey; public final String body; @DataBoundConstructor public CommentStep(@Nonnull String issueKey, @Nonnull String body) { this.issueKey = issueKey; this.body = body; } public String getIssueKey() { return issueKey; } public String getBody() { return body; } @Extension(optional = true) public static final class DescriptorImpl extends AbstractStepDescriptorImpl { public DescriptorImpl() { super(CommentStepExecution.class); } @Override public String getFunctionName() { return "jiraComment"; } @Override public String getDisplayName() { return Messages.CommentStep_Descriptor_DisplayName(); } } /** * @author jan zajic */ public static class CommentStepExecution extends AbstractSynchronousNonBlockingStepExecution<Void> { private static final long serialVersionUID = 1L; @Inject private transient CommentStep step; @StepContextParameter private transient TaskListener listener; @StepContextParameter private transient Run run; @Override protected Void run() throws Exception { JiraSite site = JiraSite.get(run.getParent()); JiraSession session = null; try { session = site.getSession(); } catch (IOException e) { listener.getLogger().println(Messages.FailedToConnect()); e.printStackTrace(listener.getLogger()); return null; } session.addComment(step.issueKey, step.body, site.groupVisibility, site.roleVisibility); return null; } } }