Saltar al contenido

Cómo obtener todos los sprints en un proyecto usando la API REST de JIRA

Después de consultar especialistas en esta materia, programadores de varias áreas y profesores hemos dado con la solución a la interrogande y la plasmamos en esta publicación.

Solución:

Puedes hacerlo pero con dos recursos:

  • Primero puedes obtener todos los tableros de scrum del proyecto con esto:

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

  • Usar los parámetros de consulta proyectoKeyOrId y escribe para filtrarlos.

  • Itere todos los elementos y use la URL a continuación con la identificación de cada tablero para obtener sus sprints:

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

¿Esto te devuelve algún resultado?

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

Si es así, encuentre la identificación de la vista que contiene este proyecto, luego pruebe esta URL:

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

Hagamos algunas suposiciones antes de escribir código:

  1. Nombre de la placa igual que el nombre del proyecto
  2. Solo habrá un tablero con ese nombre.
  3. Tenemos un modelo Sprint

Estoy usando el cliente de Jersey aquí para recuperar datos de JIRA.

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

Métodos auxiliares

   /**
     * 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();
    

Código para recuperar sprints

    /**
     * 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 getSprints(String project) 
        List 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;

    

Te invitamos a proteger nuestra faena escribiendo un comentario y dejando una valoración te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *