Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров4.6K


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

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

Всем добра!

Теги:
Хабы:
Всего голосов 9: ↑6 и ↓3+3
Комментарии4

Публикации

Истории

Работа

Data Scientist
61 вакансия
Python разработчик
137 вакансий

Ближайшие события