Merge pull request #44 from kasper-f/addNoteOnMergeRequest

Add note on merge request when build completes
This commit is contained in:
bassrock 2015-01-26 22:52:37 -08:00
commit 3472c31422
3 changed files with 43 additions and 9 deletions

View File

@ -26,6 +26,10 @@ public class GitLabMergeCause extends SCMTrigger.SCMTriggerCause {
this.mergeRequest = mergeRequest;
}
public GitLabMergeRequest getMergeRequest() {
return mergeRequest;
}
@Override
public String getShortDescription() {
return "GitLab Merge Request #" + this.mergeRequest.getObjectAttribute().getIid() + " : " + this.mergeRequest.getObjectAttribute().getSourceBranch() +

View File

@ -2,14 +2,7 @@ package com.dabsquared.gitlabjenkins;
import hudson.Extension;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.Cause;
import hudson.model.Action;
import hudson.model.Item;
import hudson.model.ParameterValue;
import hudson.model.AbstractProject;
import hudson.model.ParametersAction;
import hudson.model.StringParameterValue;
import hudson.model.*;
import hudson.plugins.git.RevisionParameterAction;
import hudson.plugins.git.GitSCM;
import hudson.scm.SCM;
@ -49,6 +42,8 @@ public class GitLabPushTrigger extends Trigger<AbstractProject<?, ?>> {
private boolean triggerOnMergeRequest = true;
private boolean triggerOpenMergeRequestOnPush = true;
private boolean setBuildDescription = true;
private boolean addNoteOnMergeRequest = true;
private List<String> allowedBranches;
// compatibility with earlier plugins
@ -84,6 +79,10 @@ public class GitLabPushTrigger extends Trigger<AbstractProject<?, ?>> {
return setBuildDescription;
}
public boolean getAddNoteOnMergeRequest() {
return addNoteOnMergeRequest;
}
public List<String> getAllowedBranches() {
return allowedBranches;
}
@ -225,7 +224,35 @@ public class GitLabPushTrigger extends Trigger<AbstractProject<?, ?>> {
}
}
public void onCompleted(AbstractBuild abstractBuild){
public void onCompleted(AbstractBuild build){
Cause mCause= build.getCause(GitLabMergeCause.class);
if (mCause != null && mCause instanceof GitLabMergeCause) {
onCompleteMergeRequest(build,(GitLabMergeCause) mCause);
}
}
private void onCompleteMergeRequest(AbstractBuild abstractBuild,GitLabMergeCause cause){
if(addNoteOnMergeRequest) {
StringBuilder msg = new StringBuilder();
if (abstractBuild.getResult() == Result.SUCCESS) {
msg.append(":white_check_mark:");
} else {
msg.append(":anguished:");
}
msg.append(" Jenkins Build ").append(abstractBuild.getResult().color.getDescription());
String buildUrl = Jenkins.getInstance().getRootUrl() + abstractBuild.getUrl();
msg.append("\n\nResults available at: ")
.append("[").append("Jenkins").append("](").append(buildUrl).append(")");
try {
GitlabProject proj = cause.getMergeRequest().getSourceProject(this.getDescriptor().getGitlab());
org.gitlab.api.models.GitlabMergeRequest mr = this.getDescriptor().getGitlab().instance().getMergeRequest(proj,cause.getMergeRequest().getObjectAttribute().getId());
this.getDescriptor().getGitlab().instance().createNote(mr,msg.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void onStarted(AbstractBuild abstractBuild) {

View File

@ -12,6 +12,9 @@
<f:entry title="Set build description to build cause (eg. Merge request or Git Push )" field="setBuildDescription">
<f:checkbox default="true" />
</f:entry>
<f:entry title="Add note with build status on merge requests" field="addNoteOnMergeRequest">
<f:checkbox default="true" />
</f:entry>
<f:entry title="Filter branches" help="/plugin/gitlab-plugin/help/help-allowedBranches.html">
<j:invoke on="${descriptor}" method="getProjectBranches" var="projectBranches" />
<j:set var="optionsSize" value="${projectBranches.size()}"/>