ScriptRunner for BitBucket - auto merge

Adam Labus February 28, 2018

I need ScriptRunner script to auto merge specific project/repository, like:

 

All PullRequest from Repository XYZ from branch Develop into Master is automticaly merged withoun any action.

 

I use this script on event  PullRequestActivityEvent, PR was merged but on PR page i get error (An error occurred -> This pull request has already been merged.), refersh page and all is good.

 

import com.atlassian.bitbucket.build.BuildStatusService
import com.atlassian.bitbucket.integration.jira.JiraIssueService
import com.atlassian.bitbucket.pull.PullRequest
import com.atlassian.bitbucket.pull.PullRequestMergeRequest
import com.atlassian.bitbucket.pull.PullRequestService
import com.atlassian.bitbucket.user.SecurityService
import com.atlassian.bitbucket.util.Operation
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.sal.api.net.Request
import com.atlassian.sal.api.net.Response
import com.atlassian.sal.api.net.ResponseException
import com.atlassian.sal.api.net.ReturningResponseHandler
import com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketBaseScript
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import groovy.transform.BaseScript


@BaseScript BitbucketBaseScript baseScript

def buildStatusService = ComponentLocator.getComponent(BuildStatusService)
def jiraIssueService = ComponentLocator.getComponent(JiraIssueService)
def securityService = ComponentLocator.getComponent(SecurityService)
def pullRequestService = ComponentLocator.getComponent(PullRequestService)

if( event.pullRequest.isOpen() ){

mergePullRequest(securityService, event.pullRequest, pullRequestService);

}

private Object mergePullRequest(SecurityService securityService, PullRequest pullRequest, pullRequestService) {

securityService.impersonating(pullRequest.author.user, "Merging pull-request on behalf of author").call(new Operation<Object, RuntimeException>() {
@SuppressWarnings("ConstantConditions")
@Override
public Object perform() {
pullRequestService.merge(new PullRequestMergeRequest.Builder(pullRequest).message("Automatically merged").build())
}
})
}

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events