当我更改了我的 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&reply_to=https%3A%2F%2Fdev.azure.com%2Fgusrbs82mlops%2Ftestpipelinecall............">here</a>.</h2>
</body></html>
“授权”:“基本{个人访问 token [字符串]}” :我在 Azure Devops 中使用了我帐户的个人访问 token
你能告诉我问题是什么吗?
最佳答案
官方文档
您应该将 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)
结果
关于python - 如何解决python中的azure devop api对象移动结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66592742/