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())
}
})
}