Как: [REST] получить и установить рецензентов по умолчанию для репозитория в Atlassian Stash (Bitbucket Server) программно с помощью REST API


Итак... мой текущий проект включает в себя создание скрипта, который будет программно настраивать репозитории на нашем Stash-сервере (он же BitBucket server). Это включает в себя установку проверяющих по умолчанию для каждого репозитория. Есть ли для этого REST API?

3 2

3 ответа:

Я знаю, что это старая проблема, но просто хотел отметить, что начиная с Bitbucket Server 5.1 по умолчанию reviewers REST API был обнародован: https://developer.atlassian.com/static/rest/bitbucket-server/latest/bitbucket-default-reviewers-rest.html

Не существуетдокументированного REST API для функций рецензентов по умолчанию, по крайней мере для версии Stash, которую мы используем (4.8.x) и, вероятно, текущая версия. И "не документированный API" я имею в виду не только в официальном остальных API-документацию, но нигде в интернете. К счастью, есть секретный API, который использует плагин.

Короче говоря, вот звонки, которые вам нужно сделать. Они просто получают, публикуют и удаляют по url. Я буду использовать curl для примеры краткость:
  • получить всех рецензентов по умолчанию для репозитория:

Пройдите по следующей ссылке:

curl -X GET -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/conditions

Результатом будет список JSON. Каждый элемент списка содержит идентификатор записи в списке (который отличается от идентификатора пользователя), за которым следует информация о правиле рецензента по умолчанию.


  • Добавить рецензента по умолчанию:

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

curl -X POST -H 'Content-Type: application/json' -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/condition --data-binary '{"sourceMatcher":{"id":"any","type":{"id":"ANY_REF"}},"targetMatcher":{"id":"refs/heads/master","type":{"id":"BRANCH"}},"reviewers":[{"id":XXXX}],"requiredApprovals":"0"}' 

Где XXXX-пользователь id (имя пользователя, e-mail или полное имя не будут работать). Идентификатор пользователя можно получить с помощью стандартного REST API. Ака сделать вам на: (base_url)/остальные/по API/1.0/пользователей?filter=(имя пользователя, адрес электронной почты или полное имя)


  • удалить рецензента по умолчанию:

Удалите следующее

curl -X DELETE -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/condition/YYY

Где YYY-идентификатор записи в списке рецензентов по умолчанию (не идентификатор пользователя). Если вы знаете идентификатор пользователя, адрес электронной почты, имя пользователя или полное имя пользователя, которого вы хотите удалить, вы можете получить все значения по умолчанию рецензенты (см. выше), найдите нужного пользователя, а затем вы можете получить идентификатор записи элемента списка.


Еще одна вещь: вы можете наблюдать плагин default-reviewers с помощью команд POST и DELETE с помощью Chrome Inspector (вкладка" сеть"), но команда GET не используется непосредственно плагином (пользовательская часть его) и не может наблюдаться с Chrome (причина, по которой я делаю этот пост, заключается в том, что эта команда GET может быть трудно понять - это было для меня)

Чтобы добавить к исчерпывающему ответу user1942541, я могу подтвердить, что это единственный способ сделать это в настоящее время. В какой-то момент мы планируем предоставить правильный, документированный API для рецензентов по умолчанию. Пожалуйста, смотрите https://jira.atlassian.com/browse/BSERV-8988 для обновлений.