Saltar al contenido

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

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

  • Usa los parámetros de consulta projectKeyOrId 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 le devuelve algún resultado?

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

Si es así, busque el ID de la vista que contiene este proyecto, luego intente 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<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;

    }
¡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 *