В данной статье поэтапно расскажу, как подключится к 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/
Добавить комментарий