ScriptRunner Groovy script to require at least one approver from a list.

Matthew Charles September 15, 2016

Hello all,

I'm wanting to have a merge check that requires at least one of the approvers to be in a list.

I tried something like this as a conditonal but for whatever reason it's not behaving like I expected.


def ops_team = ['Spongebob', 'Squidward', 'Patrick']
mergeRequest.pullRequest.reviewers.find {it.approved && it.user.name in ops_team}


Any ideas?

1 answer

1 vote
JamieA
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.
September 19, 2016

Sorry about the delay... if you use the plugin's tag you will get a faster response. I added it now.

The only problem with your code is that you need to call .veto on the mergeRequest to block it, as described in Working with Custom Merge Checks.

I rewrote your code as the following and it worked:

import com.atlassian.bitbucket.scm.pull.MergeRequest

def mergeRequest = mergeRequest as MergeRequest
def ops_team = ['Spongebob', 'Squidward', 'Patrick', 'admin']

def ok = mergeRequest.pullRequest.reviewers.any {it.approved && it.user.name in ops_team}

if (! ok) {
    mergeRequest.veto("Ops approval required", "Need at least one member of Ops to approve")
}

 

 

 

 

Matthew Charles September 20, 2016

Thank you for the reply!

 

One shortcoming I noticed is that this way requires a member to listed as a reviewer, as opposed to being 'just' approver.

 

Would something like this work:

 

def ok = mergeRequest.pullRequest.approvers.any { it.user.name in ops_team}

 

 

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.
September 21, 2016

Hi Matthew,

I'm not sure what your asking, a pull request just has reviewers which can approve it.

Can you explain a bit more how you would like the merge check to behave?

Thanks,
Adam 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events