Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Adaptavist ScriptRunner: BuildStatusService not resolved in Merge Check script

Andi Schl October 23, 2017

Hi

I'm trying to check the build status of the last commit in a pull request but can't get the BuildStatusService to get resolved using ComponentLocator.getComponent(BuildStatusService). It always returns null.

This is my script which runs as Merge Check script.

import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.bitbucket.build.BuildStatusService
import com.atlassian.bitbucket.build.BuildState
import com.atlassian.bitbucket.build.BuildStatus
import com.atlassian.bitbucket.util.Page
import com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketBaseScript
import groovy.transform.BaseScript

@BaseScript BitbucketBaseScript baseScript

def commitId = mergeRequest.pullRequest.fromRef.latestCommit

def buildStatusService = ComponentLocator.getComponent(BuildStatusService)
String debugMessage = "commitId=" + commitId + ", buildStatusService=" + buildStatusService
mergeRequest.veto("Pull request can't be merged", "Pull request can't be merged: " + debugMessage)

I copied the basic code from this link, but the result that I'm getting on the pull request 'Merge' button is:

Pull request can't be merged: commitId=c933d15fd5222d5d79e16b58c76de2a5874c6173, buildStatusService=null

I'm running on Atlassian Bitbucket Server v4.8.3. Any ideas why this does not work?

Thx, Andi

1 answer

1 vote
adammarkham
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 6, 2017

You should be able to get the BuildStatusService by using:

import com.atlassian.bitbucket.build.BuildStatusService
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import com.onresolve.scriptrunner.runner.customisers.WithPlugin

@WithPlugin("com.atlassian.bitbucket.server.bitbucket-build")

def buildStatusService = ScriptRunnerImpl.getOsgiService(BuildStatusService)

As it's listed as an OSGI service in the bitbucket-build plugin you need to use @WithPlugin and ScriptRunnerImpl.getOsgiService

Andi Schl November 7, 2017

Thanks a lot for the info! Using this approach it works perfectly.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events