2016-06-14 10 views
11

Esiste qualcosa come "http://www.example.com/jira/rest/agile/1.0/sprint?project=XYZ", per recuperare tutti gli sprint in un progetto.Come ottenere tutti gli sprint nel progetto utilizzando l'API JIRA REST

API della piattaforma JIRA possono recuperare informazioni sui progetti e l'API del software JIRA può recuperare gli sprint per una determinata scheda. Ma ho bisogno di sprint per un dato progetto (combinazione) o atleast board per un determinato progetto in modo da poter recuperare gli sprint in quelle schede in seguito

risposta

4

facciamo qualche ipotesi prima di scrivere codice:

  1. Nome scheda uguale al nome del progetto
  2. Ci sarà una sola scheda con quel nome
  3. Abbiamo un modello Sprint

Sto usando cliente Jersey qui per recuperare i dati da JIRA.

private Client jerseyClient = Client.create(); 
jerseyClient.addFilter(new HTTPBasicAuthFilter("username", "password")); 
private Gson gson = new Gson(); 

metodi di supporto

/** 
    * This method will a GET request to the URL supplied 
    * @param url to request 
    * @return String response from the GET request 
    */ 
    public String makeGetRequest(String url){ 
     ClientResponse response = jerseyClient.resource(url).accept("application/json").get(ClientResponse.class); 
     return response.getEntity(String.class); 
    } 


    /** 
    * This method helps in extracting an array from a JSON string 
    * @param response from which Array need to be extracted 
    * @param arrayName 
    * @return JsonArray extracted Array 
    */ 
    public JsonArray extractArrayFromResponse(String response, String arrayName){ 
     JsonObject jsonObject = gson.fromJson(response, JsonObject.class); 
     return jsonObject.get(arrayName).getAsJsonArray(); 
    } 

Codice per il recupero sprint

/** 
    * This method will retrieve list of sprints in a given project 
    * @param project for which we are requesting sprints 
    * @return List of sprints 
    */ 
    public List<Sprint> getSprints(String project) { 
     List<Sprint> sprintList = new ArrayList<>(); 

     try { 
      //get board URL for the given 
      String boardUrl = "https://jira.company.com/rest/agile/1.0/board?name=" + URLEncoder.encode(project, "UTF-8"); //assumption 1 
      String boardResponse = makeGetRequest(boardUrl); 
      JsonArray boards = extractArrayFromResponse(boardResponse, "values"); 
      if(boards.size() > 0){ 
       JsonObject board = boards.get(0).getAsJsonObject(); //assumption 2 

      //get all sprints for above obtained board 
      String sprintUrl = jsonHandler.extractString(board, "self")+"/sprint"; 
      String sprintsResponse = makeGetRequest(sprintUrl); 
      JsonArray sprints = extractArrayFromResponse(sprintsResponse, "values"); 

       //loop through all sprints 
       for (int i = 0; i < sprints.size(); i++) { 
        JsonElement sprint = sprints.get(i); 
        JsonObject sprintObj = sprint.getAsJsonObject(); 

        String sprintName = sprintObj.get("name").getAsString(); 
        Sprint sprint = new Sprint(sprintName); 
        sprintList.add(sprint); 
       }//end of for loop 

      } 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 

     return sprintList; 

    } 
5

Questo restituisce risultati per te?

http://jira-domain.com/rest/greenhopper/latest/rapidviews/list 

Se è così, trovare l'id della vista che contiene questo progetto, quindi provare questo URL:

http://jira-domain.com/rest/greenhopper/latest/sprintquery/{view-id}?includeHistoricSprints=true&includeFutureSprints=true 
10

si può fare, ma con due risorse:

  • Per prima cosa è può ottenere tutte le commissioni di mischia del progetto con questo:

https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards

  • Utilizzare la query Parametri projectKeyOrId e tipo filtrarli.

  • Iterazione tutti gli elementi e utilizzare l'URL di seguito con l'id di ogni scheda per ottenere i suoi scatti:

https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint-getAllSprints

Problemi correlati