代码之家  ›  专栏  ›  技术社区  ›  user45867

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

  •  0
  • user45867  · 技术社区  · 9 年前

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

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

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

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

    2 回复  |  直到 9 年前
        1
  •  4
  •   grundic    9 年前

    我认为你问的问题和以前差不多: How can I fetch (via GET) all JIRA issues? Do I go to the Search node?

    是的,同样,您必须批量执行,多次请求JIRA API。

    #!/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
    

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

        2
  •  0
  •   Bryn    5 年前

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

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

    这将以XML格式返回一些标准(如用户等)问题的最新更改。实际上,您可以在仪表板上使用“活动流”小工具来查看它的工作情况。

    enter image description here