Лучший способ извлечения данных из репозитория битбакета с использованием кода Python

Мне нужно разработать функциональность, в которой я должен извлекать файлы из репозитория Bitbucket, используя код Python на сервере Linux. Файлы находятся в самом репозитории битбакета

Можете ли вы предложить мне, как это сделать и лучший способ сделать это. Я пробовал с API-интерфейсами - http:///rest/api/1.0/projects//repos//browse - он дал мне данные уровня компонентов, т.е. только имя файла, но не фактическое содержимое файлов

Спасибо


person anonymous    schedule 18.10.2018    source источник
comment
stackoverflow.com/search?q=%5Bbitbucket-api%5D+download+file   -  person phd    schedule 19.10.2018


Ответы (1)


Существует библиотека Python, которая охватывает остальные API:

https://github.com/cosmin/stashy

Или вы можете использовать urllib2:

#!/usr/bin/python

import os
import tempfile
import sys
import urllib2
import json
import base64
import logging
import re
import pprint
import requests
import subprocess

projectKey= "FW"
repoKey = "fw"
branch = "master"
pathToVersionProperties = "core/CruiseControl/CI_version.properties"
localVersionProperties = "CI_version.properties"
bitbucketBaseUrl = "https://bitbucket.company.com/rest/api/latest"
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')

def checkPersonalAccessToken():
      try:
         os.environ["PAT"]
         logging.info("Detected Personal Access Token")
      except KeyError: 
         logging.error("Personal Access Token: $PAT env variable not set, update Jenkins master with correct environment variable")
         sys.exit(1)

def getJenkinsPropertiesFile():
    restEndpoint = "{}/projects/{}/repos/{}/raw/{}".format(bitbucketBaseUrl, projectKey, repoKey, pathToVersionProperties)
    logging.info("REST endpoint : {}".format(restEndpoint))
    request = urllib2.Request(restEndpoint)
    request.add_header("Authorization", "Bearer %s" % os.environ["PAT"])
    result = urllib2.urlopen(request).read()
    return result

checkPersonalAccessToken()
propertiesString = getJenkinsPropertiesFile()

В этом примере файл свойств извлекается из битбакета. Я не уверен, какую версию Bitbucket вы используете. В приведенном выше примере для аутентификации используются токены личного доступа (добавлены в Bitbucket 5.5). Вы также можете использовать стандартный логин/пароль.

person eeijlar    schedule 19.10.2018
comment
он дает мне данные уровня компонентов, подобные этому - {путь: {}, ревизия: refs/heads/master, children: {значения: [ {путь: { компоненты: [test.robot], parent:, name: test.robot, extension: robot, toString: test.robot }},]}}, но мне также нужны данные в файле. Я имею в виду, что мне нужно имя файла, а также данные внутри файла, которые не извлекаются этим API. - person anonymous; 19.10.2018