Выгружаем историю изменений статуса задачи в Jira с помощью Python

от автора

В данной статье поэтапно расскажу, как подключится к Jira используя Python и выгрузить историю изменений статуса.

Подключение

Первым делом нам нужно установить библиотеку, которая упрощает работу с API Jira, делаем это с помощью следующей команды в консоли:

pip install jira

После установки импортируем библиотеку в наш проект и создаем экземпляр класса JIRA, указав адрес сервера Jira и учетные данные пользователя:

from jira import JIRA   jira = JIRA(server='https://yourjiraserver', basic_auth=('username', 'password'))

Мы подключились к серверу и можем выгружать различные данные. Например, чтобы получить краткую информацию о задаче с ключом ‘Jira_key-123’, можно использовать следующий код:

from jira import JIRA   jira = JIRA(server='https://yourjiraserver', basic_auth=('username', 'password'))  issue = jira.issue('Jira_key-123')  print(issue.fields.summary)

Как узнать названия полей?

Для того чтобы получить список доступных полей в задаче и их содержимое, нам нужно немного доработать наш предыдущий код добавив параметр expand со значением editmeta:

from jira import JIRA   jira = JIRA(server='https://yourjiraserver', basic_auth=('username', 'password'))  issue = jira.issue('Jira_key-123', expand='editmeta')  with open('jira.txt', 'w', encoding='utf-8') as output:     for field_name in issue.raw['fields']:         print("Field:", field_name,                "Value:", issue.raw['fields'][field_name] , file=output)

После выполнения кода рядом с вашим исполняемым файлом появится txt файл со списком доступных полей и их содержимым.

Как выгрузить историю изменений статуса?

Цель:

Нужно по списку задач, которые были созданы вчера, получить историю изменений статуса. Формат вывода: Номер задачи, Из статуса, В статус, Дата и время, Автор изменений.

Решение:

Первым делом нам нужно написать JQL запрос, который будет выдавать нам фильтрованный список заявок, которые подходят под наши условия.

Пример простого запроса, который отфильтрует заявки созданные вчера и принадлежащие определенному проекту:

project = 'Yourproject' AND created >= startOfDay(-1d) AND created < startOfDay(0d)

Далее дополняем наш код следующим образом:

import pandas as pd from jira import JIRA   # Создаем переменную с нашим JQL запросом jql = "project='Yourproject' AND created>=startOfDay(-1d) AND created<startOfDay(0d)" # Создаем подключение к серверу Jira jira = JIRA(server='https://yourjiraserver', basic_auth=('username', 'password'))  # Выгружаем список задач по нашему JQL запросу # maxResults - максимальное количество выгружаемых задач jira_key = jira.search_issues(JQL, maxResults=1000) # Выгружаем историю статусов и записываем в history_log history_log = [] for keyid in range(len(jira_key)):     key_name = str(jira_key[keyid])     issue = jira.issue(key_name, expand='changelog')     changelog = issue.changelog     for history in changelog.histories:         for change in history.items:             if change.field == 'status':                 statuses = {}                 statuses['ID'] = key_name                 statuses['fromString'] = change.fromString                 statuses['toString'] = change.toString                 statuses['created'] = history.created                 statuses['author'] = history.author.displayName                 history_log.append(statuses) # Сохраняем histiry_log как файл Excel pd.DataFrame(history_log).to_excel('jira.xlsx', index=False)

Выполнив код выше, мы получим желаемый результат.

Всем добра!


ссылка на оригинал статьи https://habr.com/ru/post/723844/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *