≈ Approximate Number
I`m writing useless blog

Кастомизация reviewers в Pull-Request`ах на Bitbucket


Нам понадобилась возможность делать merge пулл-реквеста для определенной группы пользователей без необходимости одобрения со стороны approvers. Т.е. главные разработчики могут позволить себе делать merge без code-review. Как оказалось, таких возможностей в Bitbucket нет. В случае задания в настройках репозитория опции “Requires N approvers” невозможно выполнить merge, какими бы полномочиями пользователь не обладал, Bitbucket требует одобрения! Конфигурация Branch Permissions также не может данную проблему. Выручить может ScriptRunner.

Поэтому был добавлен небольшой ScriptRunner-скрипт “Require a number of approvers” в секцию “Script Merge Checks” (в глобальных настройках ScriptRunner). Перед этим была создана группа для главных разработчиков bitbucket-sw-managers, пользователи которой могут свободно делать merge без review/approve. Также необходимо выключить опцию Pull requests → Requires N approvers в настройках репозиториев, если она включена (мы будем управлять этой опцией динамически).

Сам скрипт выглядит следующим образом:

import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.bitbucket.user.UserService
import com.atlassian.bitbucket.auth.AuthenticationContext
 
def userService = ComponentLocator.getComponent(UserService)
def authContext = ComponentLocator.getComponent(AuthenticationContext)
 
def permitted_groups = ["bitbucket-sw-managers"]
def need_approve = true
 
for (group in permitted_groups) {
    if (userService.isUserInGroup(authContext.getCurrentUser(), group)) {
        need_approve = false
    }
}
 
return need_approve

permitted_groups является списком, потому что вполне вероятно, что одной группой не обойтись в ближайшем будущем.

Не забыть выставить требуемое число ревьюеров в поле Minimum number of approvers, например 1.

comments powered by Disqus

© Maksim Melnikov, 2015-2019.
Made with Jekyll and GitHub.