Jira Как получить журнал изменений проблемы через REST API - но ВСЕ, а не отдельная проблема

Я видел этот вопрос много раз, но не получил достаточного ответа.

Мы пытаемся сбросить все данные JIRA в наше хранилище данных / систему бизнес-аналитики. Или, по крайней мере, интересные части.

Одна вещь, которую вы можете сделать, - это отслеживать время состояния, время цикла, время выполнения заказа напрямую с длительностью поля. Это очень просто через прямую базу данных SQL JIRA. Таблицы changeItem и changeGroup.

Конечно, REST JSON API меньше влияет на производительность базы данных.

Однако ... похоже, что в остальном API нет эквивалента для получения ВСЕЙ истории изменений проблем. Да, вы можете получить журнал изменений одной проблемы напрямую через вызов API. Если у вас 100 тыс. Проблем, ожидается ли выполнение 100 тыс. Вызовов API с итерацией по идентификаторам задач? Похоже на безумие.

Можно ли каким-то образом расширить журналы изменений через API поиска, который собирает все данные о проблемах? Я этого не видел. Возможно ли то, что я ищу здесь? Или нам придется придерживаться маршрута SQL?


person user45867    schedule 18.07.2017    source источник


Ответы (2)


Я думаю, вы задаете тот же вопрос, что и раньше: Как я могу получить (через GET) все проблемы JIRA? Могу ли я перейти на узел поиска?, но, кроме того, мне интересно получить данные журнала изменений.

Да, опять же, вам придется делать это пакетно, несколько раз запрашивая JIRA API. Вот небольшой сценарий bash, который может вам в этом помочь:

#!/usr/bin/env bash

LDAP_USERNAME='<username>'
LDAP_PASSWORD='<password>'

JIRA_URL='https://jira.example.com/rest/api/2/search?'
JQL_QUERY='project=FOOBAR'

START_AT=0
MAX_RESULTS=50

TOTAL=$(curl --silent -u "${LDAP_USERNAME}:${LDAP_PASSWORD}" -X GET -H "Content-Type: application/json" "${JIRA_URL}maxResults=0&jql=${JQL_QUERY}" | jq '.total')
echo "Query would export ${TOTAL} issues."


while [ ${START_AT} -lt ${TOTAL} ]; do
    echo "Exporting from ${START_AT} to $((START_AT + MAX_RESULTS))"
    curl --silent -u "${LDAP_USERNAME}:${LDAP_PASSWORD}" -X GET -H "Content-Type: application/json" "${JIRA_URL}maxResults=${MAX_RESULTS}&startAt=${START_AT}&jql=${JQL_QUERY}& expand=changelog" | jq  -c '.issues[]' >> issues.json

    START_AT=$((START_AT + MAX_RESULTS))
done

Обратите внимание на параметр expand, который дополнительно помещает весь журнал изменений в дамп json. В качестве альтернативы вы можете использовать решение проблемы dumper на Python: реализовать обратный вызов для сохраните данные в БД, и все готово.

person grundic    schedule 19.07.2017
comment
Хм ... Я пробовал expand = changelog на конечной точке API поиска, прежде чем даже задал этот вопрос - я не заметил никакой дополнительной информации / результатов. Это, конечно, не указано в какой-либо документации Jira API как вариант расширения для этой конкретной конечной точки. Я не думал, что можно вывести журнал изменений через эту конечную точку. Возможно, мне придется дважды проверить, какую именно логику я использовал. РЕДАКТИРОВАТЬ: Думаю, я недостаточно внимательно изучил результаты своего запроса. Журнал изменений действительно доступен в конечной точке поиска, expand = changelog. Желаю, чтобы эта очень полезная информация была лучше документирована - person user45867; 19.07.2017
comment
У меня нет проблем с доставкой 1000 билетов за раз. Это был метод «по одному билету» в их стандартной документации, который требовал issue_id в URL-адресе, что казалось очень громоздким. - person user45867; 19.07.2017

Еще одна услуга, которую стоит рассмотреть, особенно если вам нужен фид вроде списка изменений:

/plugins/servlet/streams?maxResults=99&issues=activity+IS+issue%3Aupdate&providers=issues

Это возвращает поток последних изменений в проблемах в формате XML для некоторых критериев, таких как пользователи и т. Д. Фактически, вы можете поиграть с гаджетом Activity Stream на панели инструментов, чтобы убедиться, что он работает.

введите описание изображения здесь

У сервиса есть ограничение в 99 изменений одновременно, но есть пейджинг (см. Кнопку «Показать больше ..»).

person Bryn    schedule 19.05.2021