python - 如何解决python中的azure devop api对象移动结果

标签 python azure azure-devops azure-functions azure-devops-rest-api

当我更改了我的 blob 状态时,我尝试使用 python 中的 DevOps api 运行 Azure DevOps Pipeline。(所以..我的代码形式是 azure 函数的 blob 触发器形式)

import logging

import http.client
import mimetypes

import azure.functions as func

from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication
import pprint

def main(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")
    
    logging.info(f"start connect devops")
    conn = http.client.HTTPSConnection("dev.azure.com")
    body = "{\"previewRun\":false,\"stageToSkip=\": [],\"resources\": [], \"templateParameters\": [], \"variables\": []}"

    headers = {
        'Content-Type' : 'application/json',
        'Accept' : 'application/json',
        'Authorization' : 'Basic {Personal Access Token [String]}'
    }

    logging.info(f"try connect devops")
    conn.request("POST", "/{organization}/{project}/_apis/pipelines/{pipelineId}/runs?api-version=6.0-preview.1", body, headers)
    res = conn.getresponse()
    logging.info(res.msg)
    data = res.read()
    logging.info(f"%s", data.decode("utf-8"))
    logging.info(f"finish connect devops")

我得到了这个结果。

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="https://spsprodea2.vssps.visualstudio.com/_signin?realm=dev.azure.com&amp;reply_to=https%3A%2F%2Fdev.azure.com%2Fgusrbs82mlops%2Ftestpipelinecall............">here</a>.</h2>
 </body></html>

“授权”:“基本{个人访问 token [字符串]}” :我在 Azure Devops 中使用了我帐户的个人访问 token

你能告诉我问题是什么吗?

最佳答案

官方文档

Use personal access tokens

您应该将 PAT(个人访问 token )转换为 base64 格式。

'Authorization' : 'Basic {Personal Access Token [String]}'

代码如下。

pat='lr***zcailq';
message_bytes = pat.encode('ascii')
base64_bytes = base64.b64encode(message_bytes)
base64_pat = base64_bytes.decode('ascii')
url='https://dev.azure.com/jasonp2deploy/deployappwithvirtualapp/_apis/build/builds?api-version=5.0'
body = "{\"previewRun\":false,\"stageToSkip=\": [],\"resources\": [], \"templateParameters\": [], \"variables\": []}"
headers = {
    'Authorization' : 'Basic '+base64_pat
}
r = requests.get(url, data=json.dumps(body), headers=headers)
print(r.status_code)

结果

enter image description here

关于python - 如何解决python中的azure devop api对象移动结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66592742/

相关文章:

azure - 有条件地将 Blob 数据复制到 Azure 数据工厂中的 Sql 数据库

azure - 将 KEDA 与 Azure 函数队列结合使用时,Pod 突然终止

azure-devops - PowerBI——开发运营

tfs - Azure DevOps (VSTS/TFS) 迭代容量选项卡下的新字段

python - PyMC 最简单的线性模型

python - 在 python 中读取 PASCAL VOC 注释

.net - 与 Azure Application Insights、ASP.NET MVC 和 NLog 的事件关联

azure - DevOps - 禁用发布管道中的阶段

python - 使用实时相机预览更新 matplotlib 中的帧

python - 对于 Django Rest Framework,HyperLinkedRelatedField 和 HyperLinkedIdentityField 在用例上有什么区别?