gpt4 book ai didi

python - Azure 函数可以将 Git 存储库克隆到 Blob 存储吗?

转载 作者:行者123 更新时间:2023-12-02 06:41:12 24 4
gpt4 key购买 nike

我有一个业务需求,即在每次提交时克隆 Github 存储库,以触发首先从逻辑应用程序开始的工作流程,然后触发一个 azure 函数,该函数可以将 Github 存储库克隆到我的 azure 存储 blob。我从未在互联网上见过这样的用例,有人对可以做什么有什么建议吗?

最佳答案

如果您想将 Github 存储库克隆到我的 azure 存储 blob,我们可以使用 python sdk PyGithub从存储库下载文件,然后我们可以将这些文件上传到 Azure blob。

例如(我使用Azure HTTP触发功能)

  1. 安装包
pip install PyGithub
pip install aiohttp
pip install azure-storage-blob
  • 代码
  • import azure.functions as func
    from github import Github
    from azure.storage.blob.aio import BlobServiceClient
    async def upload(data,container_name,blob_name):
    connection_string='<your storage account connection string>'
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    async with blob_service_client:
    container_client = blob_service_client.get_container_client(container_name)
    try:
    # Create new Container in the Service
    await container_client.create_container()
    except Exception as ex:
    logging.info("the container has existed")

    # Get a new BlobClient
    blob_client = container_client.get_blob_client(blob_name)
    await blob_client.upload_blob(data, blob_type="BlockBlob")


    async def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    g=Github('<your github usename>','<your github password>')
    repo = g.get_user().get_repo('<your repo path>')
    contents = repo.get_contents(path='',ref='master')
    while contents:
    file_content = contents.pop(0)
    if file_content.type == "dir":
    contents.extend(repo.get_contents(file_content.path))
    else:
    logging.info(file_content.path)
    await upload(file_content.decoded_content,container_name=repo.name,blob_name=file_content.path)

    return func.HttpResponse("OK")

    关于python - Azure 函数可以将 Git 存储库克隆到 Blob 存储吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62286899/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com