Как получить все рабочие элементы (Epics, Feature, Issue, Task, Test Case, User Story и т. Д.) Для проекта Azure Devops? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь получить все рабочие элементы (Epics, Features, Issue, Task, Test Case, User Story и т. Д.) И затем классифицировать их для данного проекта, используя Microsoft azure devops python api ( ака всц) библиотека.

В work_item_tracking мне не удалось найти какую-либо функцию для получения всех рабочих элементов или выборки всех рабочих элементов на основе их типа.

Уже есть функция для получения всех рабочих элементов, которые я не могу найти, или я должен написать WIQL-запрос для получения необходимых данных?

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Уже есть функция для получения всех рабочих элементов, которые я не могу найти, или я должен написать WIQL-запрос для получения необходимых данных?

Вы правы. Мы могли бы написать WIQL-запрос для получения системных идентификаторов, затем мы могли бы в соответствии с system.Ids запрашивать рабочие элементы. Ниже приведен демонстрационный код для извлечения всех рабочих элементов с помощью кода Python.

from vsts.vss_connection import VssConnection
from msrest.authentication import BasicAuthentication
import json
from vsts.work_item_tracking.v4_1.models.wiql import Wiql

def emit(msg, *args):
print(msg % args)

def print_work_item(work_item):
    emit(
        "{0} {1}: {2}".format(
            work_item.fields["System.WorkItemType"],
            work_item.id,
            work_item.fields["System.Title"],
        )
    )

personal_access_token = 'YourPATToken'
organization_url = 'https://dev.azure.com/YourorgName'
# Create a connection to the org
credentials = BasicAuthentication('', personal_access_token)
connection = VssConnection(base_url=organization_url, creds=credentials)
wiql = Wiql(
        query="""select [System.Id] From WorkItems """
    )

wit_client = connection.get_client('vsts.work_item_tracking.v4_1.work_item_tracking_client.WorkItemTrackingClient')
wiql_results = wit_client.query_by_wiql(wiql).work_items
if wiql_results:
        # WIQL query gives a WorkItemReference with ID only
        # => we get the corresponding WorkItem from id
        work_items = (
            wit_client.get_work_item(int(res.id)) for res in wiql_results
        )
        for work_item in work_items:
            print_work_item(work_item)

Дополнительную демонстрацию можно найти по ссылке .

.
0 голосов
/ 04 марта 2019

Я использую эту документацию для этого.

С помощью Wiql мы можем выполнять запросы к Azure Devops или TFS, я использую Postman для работы с ним.Первый шаг - использовать de следующим URL: https://dev.azure.com/{organization}/{projectId}/_apis/wit/wiql?api-version=5.0

Окей, следующий шаг - создать запрос с помощью wiql, для этого нам потребуется json, чтобы отправить запрос:

{
  "query": "Select [System.Id], [System.Title], [System.State], [System.WorkItemType] From WorkItems"
}

Если запрос будет 200 Ok, вы получите json со всеми элементами Works.

Мой результат: Результат моего запроса

0 голосов
/ 22 января 2019

Прежде всего, я не использую библиотеку python, но я могу сказать вам, какие API вы должны использовать.

Существует API для извлечения всех рабочих элементов . Это просто объект JSON со всеми типами и свойствами рабочего элемента. Имейте в виду, что это не более 200 рабочих мест на каждый запрос. Если вам нужно больше рабочих элементов, вам нужно написать WIQL-запрос.

GET https://dev.azure.com/{organization}/{project}/_apis/wit/workitems?ids={ids}&api-version=5.0-preview.3

Лично я бы посоветовал вам использовать запросы WIQL для извлечения данных из DevOps Azure. Он очень гибкий и может использоваться в любой ситуации.

Здесь вы можете найти больше информации о запросах WIQL

Здесь вы можете найти подробную информацию об API Azure DevOps Rest для запросов WIQL

...