Как создать несколько веток ограничений с помощью Bitbucket API? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь автоматизировать настройку разрешений ветвления с помощью API-интерфейса bitbucket, но когда я пытаюсь добавить несколько правил, оно не перезаписывает старое правило (если оно существует). Я создаю 2 правила для репозитория для одной ветви, но если я повторно запустлю API с небольшим изменением в правиле, он добавит добавленное мной правило вместо того, чтобы редактировать текущее правило.

Я запускаю этот вызов:

curl -X POST -v -u "username:secret" -H "Content-Type: application/vnd.atl.bitbucket.bulk+json" https://bitbucket.example.com/rest/branch-permissions/2.0/projects/myproj/repos/myrepo/restrictions -d '[{ "type": "read-only","matcher": {"id": "master","displayId": "master","type": {"id":"PATTERN","name": "Pattern"}},"users": ["my.user"],"groups": ["StashAdmins"]},{ "type": "no-deletes","matcher": {"id": "master","displayId": "master","type": { "id":"PATTERN","name": "Pattern"}},"users": ["user.my"],"groups": []}]'

Затем я захотел перезаписать текущие права доступа к филиалам, поэтому я изменил первое правило с «только чтение» на «только запрос по запросу», поэтому я запустил:

curl -X POST -v -u "username:secret" -H "Content-Type: application/vnd.atl.bitbucket.bulk+json" https://bitbucket.example.com/rest/branch-permissions/2.0/projects/myproj/repos/myrepo/restrictions -d '[{ "type": "pull-request-only","matcher": {"id": "master","displayId": "master","type": {"id":"PATTERN","name": "Pattern"}},"users": ["my.user"],"groups": ["StashAdmins"]},{ "type": "no-deletes","matcher": {"id": "master","displayId": "master","type": { "id":"PATTERN","name": "Pattern"}},"users": ["user.my"],"groups": []}]'

но оно добавило новое правило (только по запросу) вместо редактирования всего правила.

Кто-нибудь знает, как принудительно переписать правило ограничения ветвлений?

1 Ответ

0 голосов
/ 05 июля 2019

С помощью этой конечной точки Rest Api вы можете просто создавать новые ограничения, поскольку у вас может быть несколько ограничений на репозиторий и / или проект.

Подробнее см .: https://docs.atlassian.com/bitbucket-server/rest/6.4.0/bitbucket-ref-restriction-rest.html#idp1

Сначала необходимо удалить все ограничения, которые были созданы ранее, а затем опубликовать новое. Чтобы получить все ограничения для репозитория, вам нужно использовать эту конечную точку:

GET /rest/branch-permissions/2.0/projects/{projectKey}/repos/{repositorySlug}/restrictions https://docs.atlassian.com/bitbucket-server/rest/6.4.0/bitbucket-ref-restriction-rest.html#idp3

И затем вы можете удалить их один за другим с помощью этого:

DELETE /rest/branch-permissions/2.0/projects/{projectKey}/repos/{repositorySlug}/restrictions/{id} https://docs.atlassian.com/bitbucket-server/rest/6.4.0/bitbucket-ref-restriction-rest.html#idp6

...