2017-07-18 3 views
0

J'ai vu cette question plusieurs fois, mais pas de réponse suffisante.Jira - Comment obtenir le problème changelog via l'API REST - mais tous, pas un seul numéro

Nous essayons de vider toutes les données JIRA dans notre entrepôt de données/système BI. Ou au moins, les parties intéressantes.

Une chose que vous pouvez faire est de suivre les temps d'état, le temps de cycle, le délai d'exécution directement avec les durées de champ. C'est très facile via la base de données SQL directe de JIRA. Les tables changeItem et changeGroup.

Bien sûr, l'API REST JSON a un impact moindre sur les performances de la base de données.

Toutefois ... il ne semble pas y avoir d'équivalent dans l'API restante d'extraction de l'historique de tous les problèmes. Oui, vous pouvez récupérer le journal des modifications d'un problème directement via un appel d'API. Si vous avez des problèmes de 100 Ko, êtes-vous censé effectuer des appels d'API de 100 Ko, en répétant les numéros de problème? On dirait de la folie.

Est-il en quelque sorte possible d'étendre les changelogs via l'API de recherche, qui amasse toutes les données de problème? Je ne l'ai pas vu. Est-ce que ce que je cherche ici est possible? Ou devrons-nous nous en tenir à la route SQL?

Répondre

2

Je pense que vous posez à peu près la même question que précédemment: How can I fetch (via GET) all JIRA issues? Do I go to the Search node?, mais en plus intéressant d'obtenir des données changelog. Oui, encore une fois, vous devez le faire par lots, en demandant plusieurs fois l'API JIRA. Voici petit script bash, qui pourrait vous aider à le faire:

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

S'il vous plaît noter le paramètre élargir, qui en outre a mis tout journal des modifications à la JSON benne ainsi. Vous pouvez également utiliser la solution python issue dumper: implémentez le callback pour stocker les données dans DB et vous avez terminé.

+0

Hmm ... J'ai essayé expand = changelog sur le point de terminaison de l'API de recherche avant même que je pose cette question - je n'ai pas remarqué d'informations/de résultats supplémentaires. Il n'est certainement pas répertorié sur aucune documentation de l'API Jira en tant qu'option de développement pour ce point de terminaison particulier. Je ne pensais pas qu'il était possible de faire ressortir le changelog via ce point de terminaison. Peut-être devrais-je vérifier exactement quelle logique j'ai utilisée. EDIT: Je suppose que je n'ai pas examiné les résultats de mes recherches assez étroitement. Le changelog est en effet disponible sur le point de terminaison de la recherche, expand = changelog. Je souhaite que cette information très utile soit mieux documentée. – user45867

+0

Je n'ai aucun problème à aller chercher 1000 tickets à la fois. C'était la méthode '1 ticket' à la fois dans leur documentation standard qui nécessitait un numéro_de_libération dans l'URL qui semblait très encombrant. – user45867