Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jira——如何通过RESTAPI获取问题变更日志——但不是单个问题_Api_Jira_Changelog - Fatal编程技术网

Jira——如何通过RESTAPI获取问题变更日志——但不是单个问题

Jira——如何通过RESTAPI获取问题变更日志——但不是单个问题,api,jira,changelog,Api,Jira,Changelog,这个问题我已经见过很多次了,但是没有足够的答案 我们正在尝试将所有JIRA数据转储到我们的数据仓库/BI系统中。或者至少是有趣的部分 你可以做的一件事是直接跟踪状态时间、周期时间、交付周期和现场持续时间。通过JIRA的直接SQL数据库,这非常容易。表changeItem和changeGroup 当然,RESTJSONAPI对数据库的性能影响较小 然而。。。RESTAPI中似乎没有获取所有问题更改历史的等价物。是的,您可以通过API调用直接获取一个问题的变更日志。如果您有100k个问题,是否希望通

这个问题我已经见过很多次了,但是没有足够的答案

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

你可以做的一件事是直接跟踪状态时间、周期时间、交付周期和现场持续时间。通过JIRA的直接SQL数据库,这非常容易。表changeItem和changeGroup

当然,RESTJSONAPI对数据库的性能影响较小

然而。。。RESTAPI中似乎没有获取所有问题更改历史的等价物。是的,您可以通过API调用直接获取一个问题的变更日志。如果您有100k个问题,是否希望通过问题ID进行100k API调用?听起来像疯了


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

我认为您提出的问题与以前几乎相同:,但对获取变更日志数据更感兴趣

是的,同样地,您必须批量执行,多次请求jiraapi。 下面是一个小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
#/usr/bin/env bash
LDAP_用户名=“”
LDAP_密码=“”
吉拉乌https://jira.example.com/rest/api/2/search?'
JQL_QUERY='project=FOOBAR'
从=0开始
最大结果=50
TOTAL=$(curl--silent-u“${LDAP_USERNAME}:${LDAP_PASSWORD}”-X GET-H“内容类型:application/json”“${JIRA_URL}maxResults=0&jql=${jql_QUERY}”| jq'.TOTAL')
echo“查询将导出${TOTAL}个问题。”
而[${START_AT}-lt${TOTAL}];做
echo“从${START_AT}导出到$((START_AT+MAX_结果))”
curl--silent-u“${LDAP_USERNAME}:${LDAP_PASSWORD}”-X GET-H”内容类型:application/json“${JIRA_URL}maxResults=${MAX_RESULTS}&startAt=${START_AT}&jql=${jql_QUERY}&expand=changelog”| jq-c“。问题[]'>>issues.json
起始点=$((起始点+最大结果))
完成

请注意expand参数,它还将所有更改日志放入json转储。或者,您可以使用python解决方案:实现回调将数据存储到db,就完成了

我认为您提出的问题与以前几乎相同:,但对获取变更日志数据更感兴趣

是的,同样地,您必须批量执行,多次请求jiraapi。 下面是一个小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
#/usr/bin/env bash
LDAP_用户名=“”
LDAP_密码=“”
吉拉乌https://jira.example.com/rest/api/2/search?'
JQL_QUERY='project=FOOBAR'
从=0开始
最大结果=50
TOTAL=$(curl--silent-u“${LDAP_USERNAME}:${LDAP_PASSWORD}”-X GET-H“内容类型:application/json”“${JIRA_URL}maxResults=0&jql=${jql_QUERY}”| jq'.TOTAL')
echo“查询将导出${TOTAL}个问题。”
而[${START_AT}-lt${TOTAL}];做
echo“从${START_AT}导出到$((START_AT+MAX_结果))”
curl--silent-u“${LDAP_USERNAME}:${LDAP_PASSWORD}”-X GET-H”内容类型:application/json“${JIRA_URL}maxResults=${MAX_RESULTS}&startAt=${START_AT}&jql=${jql_QUERY}&expand=changelog”| jq-c“。问题[]'>>issues.json
起始点=$((起始点+最大结果))
完成

请注意expand参数,它还将所有更改日志放入json转储。或者,您可以使用python解决方案:实现回调将数据存储到db,就完成了

另一项值得考虑的服务,特别是当您需要一个类似提要的更改列表时:

/plugins/servlet/streams?maxResults=99&issues=activity+IS+issue%3Aupdate&providers=issues
这将以XML格式返回一些条件(如用户等)的问题的最新更改。实际上,您可以在仪表板上使用“活动流”小工具来查看它的工作情况


该服务一次最多只能进行99次更改,但有分页功能(请参见Show More..按钮)

另一项值得考虑的服务,特别是当您需要类似提要的更改列表时:

/plugins/servlet/streams?maxResults=99&issues=activity+IS+issue%3Aupdate&providers=issues
这将以XML格式返回一些条件(如用户等)的问题的最新更改。实际上,您可以在仪表板上使用“活动流”小工具来查看它的工作情况


该服务一次最多可更改99次,但有分页功能(请参阅“显示更多…”按钮)

Hmm。。。在我问这个问题之前,我在搜索API端点上尝试了expand=changelog——我没有注意到任何其他信息/结果。它肯定没有作为这个特定端点的扩展选项列在任何类型的Jira API文档中。我认为不可能通过这个端点显示变更日志。也许我必须仔细检查我使用的逻辑。编辑:我想我没有仔细检查我的查询结果。更改日志确实在搜索端点expand=changelog上可用。希望这些有用的信息能被更好地记录下来我一次能买到1000张票。在他们的标准文档中,一次1张票的方法要求URL中有一个问题id,这看起来非常麻烦。嗯。。。在我问这个问题之前,我在搜索API端点上尝试了expand=changelog——我没有注意到任何其他信息/结果。它肯定没有作为这个特定端点的扩展选项列在任何类型的Jira API文档中。我认为不可能通过这个端点显示变更日志。也许我必须仔细检查我使用的逻辑。编辑:我想我没有仔细检查我的查询结果。更改日志确实在搜索端点expand=changelog上可用。希望这些有用的信息能被更好地记录下来我一次能买到1000张票。在他们的标准文档中,一次1张票的方法要求URL中有一个问题id,这看起来非常麻烦。