使用python代码从bitbucket存储库中提取数据的最佳方法

时间:2018-10-18 22:34:03

标签: linux python-3.x git bitbucket bitbucket-api

我必须开发一种功能,其中必须使用Linux服务器上的python代码从bitbucket存储库中提取文件。文件位于bitbucket存储库本身中

您能建议我如何做以及最好的做事方法。我尝试使用API​​-http:///rest/api/1.0/projects//repos//browse-它为我提供了组件级数据,即仅文件名,而没有实际文件内容

谢谢

1 个答案:

答案 0 :(得分:0)

有一个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。上面的示例使用个人访问令牌进行身份验证(Bitbucket 5.5中已添加)。您也可以使用标准的用户名/密码。