![](/img/trans.png)
[英]How to find runID from artifact in azure devops yaml pipeline
[英]How to find the associated pipeline in Azure DevOps from a given yaml file?
我在 Azure DevOps 中有很多管道。 我的代码存储在 Azure DevOps git 存储库中。 我知道 yaml 文件的路径,这是我的管道之一的定义。 不幸的是,管道的命名约定并不总是理想的,所以我不能轻易找到它与哪个管道相关联。 有什么快速的方法可以找到吗? 不希望单独检查每个管道。
没有内置功能,我编写了一个示例 python 代码来满足您的要求:
import requests
orgname = "<Your Organization Name>"
projectname = "<Your Project Name>"
yamlname = "<Your YAML file name>"
reponame = "<Your Repo Name>"
PAT = "<Your Personal Access Token>"
url_repo = "https://dev.azure.com/"+orgname+"/"+projectname+"/_apis/git/repositories/"+reponame+"?api-version=4.1"
payload_repo={}
headers_repo = {
'Authorization': 'Basic '+PAT
}
response_repo = requests.request("GET", url_repo, headers=headers_repo, data=payload_repo)
data_repo = response_repo.json()
repoid = data_repo.get('id')
url_pipelines = "https://dev.azure.com/"+orgname+"/"+projectname+"/_apis/pipelines?api-version=6.0-preview.1"
payload_pipelines={}
headers_pipelines = {
'Authorization': 'Basic '+PAT
}
response_pipelines = requests.request("GET", url_pipelines, headers=headers_pipelines, data=payload_pipelines)
data_pipelines = response_pipelines.json()
counter_pipelines = str(data_pipelines.get('count'))
counter = 0
for f in data_pipelines.get('value'):
counter = counter + 1
url_pipeline = f.get('url')
id_pipeline = f.get('id')
pipeline_name_current = f.get('name')
url_pipeline = "https://dev.azure.com/"+orgname+"/"+projectname+"/_apis/pipelines/"+str(id_pipeline)+"?revision=1"
payload_pe={}
headers_pe = {
'Authorization': 'Basic '+PAT
}
response_pe = requests.request("GET", url_pipeline, headers=headers_pe, data=payload_pe)
data_pe = response_pe.json()
if (data_pe.get('configuration').get('type') == 'yaml') and (data_pe.get('configuration').get('repository') != None):
#
current_yamlname = data_pe.get('configuration').get('path')
current_pipelinename = data_pe.get('name')
current_repoid = data_pe.get('configuration').get('repository').get('id')
if (current_yamlname == yamlname) and (current_repoid==repoid):
print(data_pe.get('name'))
elif data_pe.get('configuration').get('repository'):
print("This is not a DevOps Repository")
else:
#No YAML
pass
print(counter)
我可以通过提供 YAML 文件和 repo 名称来获取管道名称:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.