Bitbucket Server: REST API возвращает только публичные, а не частные репозитории - PullRequest
0 голосов
/ 05 октября 2018

Один из моих клиентов запускает экземпляр Atlassian Bitbucket Server v5.14.0 (не Bitbucket Cloud!) В своей внутренней сети.Я пытаюсь подключиться к REST API, чтобы получить список проектов, а для того, над которым я работаю, получить список репозиториев git:

# first REST API call: returns list of projects on server,
# `?limit=1000` appended to work around / disable pagination:
# https://docs.atlassian.com/bitbucket-server/ ...
#  ... rest/5.14.0/bitbucket-rest.html#idm46783597898304
curl --header "Authorization: Bearer <my access token>" \
     https://<bitbucket hostname>/rest/api/1.0/projects?limit=1000

# second REST API call: returns list of repos in <project ID>
# https://docs.atlassian.com/bitbucket-server/ ...
#  ... rest/5.14.0/bitbucket-rest.html#idm45701776945568
curl --header "Authorization: Bearer <my access token>" \
     https://<bitbucket hostname>/rest/api/1.0/projects/<project key>/repos?limit=1000

В общем, это работает хорошо.Проблема, однако, заключается в том, что второй вызов возвращает только репозитории с общедоступной видимостью, и, хотя я могу видеть как публичные, так и частные репозитории в веб-приложении после входа в систему, похоже, нет никакого способа получить частные репозитории с помощью REST API..

Я также пытался

# alternate approach: list repo by name
# https://docs.atlassian.com/bitbucket-server/ ...
#  ... rest/5.14.0/bitbucket-rest.html#idm46783597782384
curl --header "Authorization: Bearer <my access token>" \
     https://<bitbucket hostname>/rest/api/1.0/repos?name=<name of private repo>

, но это также не возвращает информацию о хранилище.

Я тщательно искал документацию, но до сих пор это только кажетсябыть ошибкой в ​​Bitbucket, и получение частных репозиториев через REST API просто невозможно.

Q: Кто-нибудь знает, как заставить это работать?
Q: Кто-нибудь использует REST API Bitbucket Server?Каков ваш опыт / впечатление?

1 Ответ

0 голосов
/ 23 октября 2018

Это может иметь отношение к разрешениям, которые есть у вашего пользователя.Это пользователь с правами администратора?

Я использовал этот сценарий для получения всех репозиториев:

#!/usr/bin/python

import stashy
import os
import sys
import urllib2
import json
import base64

bitbucketBaseUrl = "https://bitbucket.company.com"
bitbucketUserName = "admin"

def validateScriptParameters():
    if len(sys.argv) != 2:
        sys.exit("Usage: {} [Bit Bucket admin password]".format(
            os.path.basename(sys.argv[0])))




validateScriptParameters

bitbucketPassword = sys.argv[1].strip()
bitbucket = stashy.connect(bitbucketBaseUrl, bitbucketUserName, bitbucketPassword)
projectList = bitbucket.projects.list()
total = 0
for project in projectList:
        projectName = project['key']
        repoList = bitbucket.projects[projectName].repos.list()
        for repo in repoList:
            print repo['name']

Этот сценарий запускается от имени пользователя с правами администратора, и вам нужна скрытая библиотека:

pip install stashy

Я считаю, что REST API довольно хорош, может быть немного сложно понять, как правильно сделать запрос, но документация там есть.Трудно найти, хотя.Они выпускают новые документы с каждым выпуском, и они, как правило, являются лучшими:

https://docs.atlassian.com/bitbucket-server/rest/5.15.0/bitbucket-rest.html?utm_source=%2Fstatic%2Frest%2Fbitbucket-server%2Flatest%2Fbitbucket-rest.html&utm_medium=301

Существует также плагин REST API для bitbucket, который позволяет тестировать запросы непосредственно к серверу:

REST API Browser

...