2017-07-18 11 views
0

Ich habe diese Frage viele Male gesehen, aber keine ausreichende Antwort.Jira - Wie bekomme ich ein Problem Changelog über REST API - aber ALLE, nicht einzelne Ausgabe

Wir versuchen, alle JIRA-Daten in unser Data Warehouse/BI-System zu übertragen. Oder zumindest die interessanten Teile.

Sie können Statuszeiten, Zykluszeit und Vorlaufzeit direkt mit den Felddauern verfolgen. Dies ist sehr einfach über die direkte SQL-Datenbank von JIRA. Die Tabellen changeItem und changeGroup.

Natürlich hat die REST JSON API weniger Auswirkungen auf die Performance der Datenbank.

Allerdings ... scheint es keine Entsprechung in der Rest-API zu geben, die ALLE Problemänderungshistorie abruft. Ja, Sie können das Änderungsprotokoll für ein Problem direkt über einen API-Aufruf abrufen. Wenn Sie 100k-Probleme haben, wird erwartet, dass Sie 100k-API-Aufrufe durchführen, indem Sie die Ausgabe-IDs durchlaufen? Klingt nach Wahnsinn.

Ist es irgendwie möglich, Changelogs über die Such-API zu erweitern, die alle Ausgabedaten sammelt? Ich habe es nicht gesehen. Ist das, was ich hier suche, möglich? Oder müssen wir uns an die SQL-Route halten?

Antwort

2

Ich denke, Sie fragen ziemlich genau die gleiche Frage wie zuvor: How can I fetch (via GET) all JIRA issues? Do I go to the Search node?, aber zusätzlich interessant in Changelog Daten zu bekommen.

Ja, wieder müssen Sie es in Batch tun, JIRA API mehrmals anfordern. ist hier wenig Bash-Skript, mit dem Sie das tun helfen könnte:

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

Bitte beachten Sie die erweitern Parameter, die zusätzlich alle Änderungsprotokoll-Dump auf die json als auch setzen. Alternativ können Sie issue dumper Python-Lösung verwenden: Implementieren Sie den Rückruf zum Speichern von Daten in db und fertig.

+0

Hmm ... Ich habe versucht, expand = changelog auf der Suche API-Endpunkt, bevor ich überhaupt diese Frage gestellt - ich habe keine zusätzlichen Informationen/Ergebnisse bemerkt. Es ist sicherlich nicht in irgendeiner Art von Jira API-Dokumentation als eine Erweiterungsoption für diesen bestimmten Endpunkt aufgeführt. Ich dachte nicht, dass es möglich ist, das Changelog über diesen Endpunkt herauszubringen. Vielleicht muss ich genau überprüfen, welche Logik ich verwendet habe. EDIT: Ich denke, ich habe meine Abfrageergebnisse nicht genau genug untersucht. Das Änderungsprotokoll ist tatsächlich auf dem Suchendpunkt verfügbar: expand = changelog. Ich wünschte, dieses sehr nützliche Stück Information wäre besser dokumentiert worden. – user45867

+0

Ich habe kein Problem, 1000 Tickets gleichzeitig zu holen. Es war die "1 Ticket" Methode in ihrer Standarddokumentation, die eine Issue_id in der URL erforderte, die sehr mühsam erschien. – user45867

Verwandte Themen