【问题标题】:Get ID from workItem on Azure devops using python使用 python 从 Azure devops 上的 workItem 获取 ID
【发布时间】:2021-07-28 04:21:20
【问题描述】:

我想从 Azure DevOPS 中的多个项目中获取特定工作项的 ID。

我试试下面的代码

from azure.devops.connection import Connection
from azure.devops.v5_1.work_item_tracking.models import Wiql
from msrest.authentication import BasicAuthentication

 

pat = 'my_PAT'

organization = 'https://dev.azure.com/ORG/PROJ'
 
credentials = BasicAuthentication('', pat)

connection = Connection(base_url=organization, creds=credentials)
wit_client = connection.clients.get_work_item_tracking_client()

tp_query = Wiql(query="""


SELECT [System.Id] FROM workitems WHERE [System.Title] CONTAINS WORDS 'ESA-2525'

""")

 
for plan in wit_client.query_by_wiql(tp_query).work_items:

    print(f"Results for {plan.id}")

我得到的错误是 Traceback(最近一次调用最后一次):

文件“C:\Users\P70252\source\repos\Azure_WIKI_PostUpgrades\Azure_WIKI_PostUpgrades\devops.py”,第 15 行,

wit_client = connection.clients.get_work_item_tracking_client()

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\released\client_factory.py”,第 170 行,在 get_work_item_tracking_client 中

return self._connection.get_client('azure.devops.released.work_item_tracking.work_item_tracking_client.WorkItemTrackingClient')

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\connection.py”,第 45 行,在 get_client 中

self._client_cache[client_type] = self._get_client_instance(client_class)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\connection.py”,第 58 行,在 _get_client_instance 中

url = self._get_url_for_client_instance(client_class)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\connection.py”,第 70 行,在 _get_url_for_client_instance 中

resource_areas = self._get_resource_areas()

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\connection.py”,第 120 行,在 _get_resource_areas 中

self._resource_areas = location_client.get_resource_areas()

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\v5_1\location\location_client.py”,第 107 行,在 get_resource_areas 中

query_parameters=query_parameters)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 77 行,在 _send 中

query_parameters=query_parameters)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 119 行,在 _create_request_message 中

location = self._get_organization_resource_location(location_id)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 160 行,在 _get_organization_resource_location

return self._get_resource_location(self.normalized_url, location_id)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 172 行,在 _get_resource_location

Client._locations_cache[url] = self._get_resource_locations(url, all_host_types=False)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 208 行,在 _get_resource_locations

response = self._send_request(request, headers=headers)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 68 行,在 _send_request 中

self._handle_error(request, response)

文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\devops\client.py”,第 291 行,_handle_error

url=request.url))

azure.devops.exceptions.AzureDevOpsAuthenticationError:请求的资源需要用户身份验证:https://dev.azure.com/ORG/PROJ/_apis

按任意键继续。 . .

“ESA-2525”是一个虚拟工作项,我将在其上用一个变量替换它,这样我就可以从不同的项目中获取 ID。

连接有效,但 wiql 无效。有什么想法吗?

【问题讨论】:

    标签: python azure devops


    【解决方案1】:

    关于问题,请参考以下代码

    1.包

    azure-devops==6.0.0b4
    
    1. 创建完全访问个人访问令牌

    2. 代码

    pat = '<token>'
    
    organization = 'https://dev.azure.com/jim0375'
    
    credentials = BasicAuthentication('', pat)
    
    connection = Connection(base_url=organization, creds=credentials)
    wit_client = connection.clients.get_work_item_tracking_client()
    
    tp_query = Wiql(
        query="SELECT [System.Id] FROM WorkItems WHERE  [System.Title] CONTAINS WORDS 'test'")
    
    
    for plan in wit_client.query_by_wiql(tp_query).work_items:
    
        print(f"Results for {plan.id}")
    
    

    【讨论】:

    • 如果对你有用,可以accept it as an answer吗?它可能会帮助更多有类似问题的人。
    • 您好 Jim,我将数据包从 azure-devops==6.0.0b2 升级到 azure-devops==6.0.0b4 我添加了我的组织和我的令牌(有效),我得到了同样的错误.我在代码的第 13 行发现了问题。
    • @yskapell 请检查您的个人访问令牌是否有权访问您的组织。
    • 出于某种原因,我的 PAT 是问题所在。
    猜你喜欢
    • 2020-12-09
    • 2020-10-28
    • 2020-11-16
    • 2021-06-29
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2020-03-22
    • 2019-09-23
    相关资源
    最近更新 更多