簡體   English   中英

使用 python 從 Azure devops 上的 workItem 獲取 ID

[英]Get ID from workItem on Azure devops using python

我想從 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)

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

url = self._get_url_for_client_instance(client_class)

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

resource_areas = self._get_resource_areas()

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

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)

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

query_parameters=query_parameters)

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

location = self._get_organization_resource_location(location_id)

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

return self._get_resource_location(self.normalized_url, location_id)

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

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

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

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

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

self._handle_error(request, response)

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

url=request.url))

azure.devops.exceptions.AzureDevOpsAuthenticationError:請求的資源需要用戶身份驗證: https://dev.azure.com/G

按任意鍵繼續。 . .

“ESA-2525”是一個虛擬工作項,我將用一個變量替換它,這樣我就可以從不同的項目中獲取 ID。

連接有效,但 wiql 無效。 有任何想法嗎?

關於這個問題,請參考以下代碼

1.package

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}")

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM