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