Jira - 如何通过REST API获取问题更改日志 - 但是所有,而不是单一问题

时间:2017-07-18 15:26:45

标签: api jira changelog

我已多次看过这个问题,但没有足够的答案。

我们正在尝试将所有JIRA数据转储到我们的数据仓库/ BI系统中。或者至少是有趣的部分。

您可以做的一件事是直接跟踪字段持续时间跟踪状态时间,周期时间,提前期。通过JIRA的直接SQL数据库,这非常简单。表changeItem和changeGroup。

当然,REST JSON API对数据库的性能影响较小。

然而......在获取所有问题更改历史记录的其余API中似乎没有相应的内容。是的,您可以通过API调用直接获取一个问题的更改日志。如果您有100k问题,您是否希望进行100k API调用,迭代问题ID?听起来很疯狂。

是否有可能通过搜索API扩展更改日志,从而收集所有问题数据?我还没有看到它。我在这里寻求的是可能的吗?或者我们是否必须坚持SQL路线?

2 个答案:

答案 0 :(得分:3)

我认为你问的问题几乎与以前一样:How can I fetch (via GET) all JIRA issues? Do I go to the Search node?,但另外有趣的是获取更改日志数据。

是的,您必须再次批量执行此操作,多次请求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转储中。或者,您可以使用issue dumper python解决方案:实施回调将数据存储到数据库并完成。

答案 1 :(得分:0)

另一个值得考虑的服务,特别是如果您需要像更改列表这样的提要:

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

这会针对某些条件(例如用户等)以 XML 格式返回问题的最后更改提要。实际上,您可以在仪表板上使用“活动流”小工具来查看它的工作情况。

enter image description here

该服务一次限制为 99 次更改,但有分页(请参阅“显示更多..”按钮)