Example scripts
To homepage
Bitbucket

Add Random Reviewers to Pull Request From Group
App in script

ScriptRunner For Bitbucket
by Adaptavist
Compatibility

Bitbucket (6.0 - 7.17)

ScriptRunner For Bitbucket (7.10.0)
Language |
groovy
import com.atlassian.bitbucket.pull.PullRequestService
import com.atlassian.bitbucket.user.UserService
import com.atlassian.bitbucket.user.ApplicationUser
import com.atlassian.bitbucket.util.PageUtils
import com.atlassian.sal.api.component.ComponentLocator
def final GROUP_NAME = 'dev-reviewer-group'
def final PROJECT_KEY = 'LIBRARY'
def final REPOSITORY_NAME = 'scripts-repository'
def final NUMBER_OF_USERS = 2
def final PAGE_SIZE = 1000
def pullRequestService = ComponentLocator.getComponent(PullRequestService)
def userService = ComponentLocator.getComponent(UserService)
def pullRequest = event.pullRequest
if (pullRequest.toRef.repository.project.key != PROJECT_KEY || pullRequest.toRef.repository.name != REPOSITORY_NAME) {
return
}
def usersFromGroupWithoutPrAuthor = PageUtils.toStream({ pageRequest ->
userService.findUsersByGroup(GROUP_NAME, pageRequest)
}, PAGE_SIZE).findAll {
it != pullRequest.author.user
}
Collections.shuffle(usersFromGroupWithoutPrAuthor)
def assignedReviewers = [] as Set<ApplicationUser>
while (!usersFromGroupWithoutPrAuthor.isEmpty() && assignedReviewers.size() < NUMBER_OF_USERS) {
def reviewer = usersFromGroupWithoutPrAuthor.pop() as ApplicationUser
try {
pullRequestService.addReviewer(pullRequest.toRef.repository.id as int, pullRequest.id as long, reviewer.name)
assignedReviewers << reviewer
} catch (Exception e) {
log.warn("Could not add user ${reviewer.name} as a reviewer for this pull request: ${e.message}")
}
}
if (assignedReviewers.size() < NUMBER_OF_USERS) {
log.warn('Not enough users in the group available to add as reviewers')
return
}
Having an issue with this script?
Report it here