web-dev-qa-db-ja.com

JIRAを使用してプロジェクト内のすべてのスプリントを取得する方法REST API

プロジェクト内のすべてのスプリントを取得するための「 http://www.example.com/jira/rest/agile/1.0/sprint?project=XYZ "」のようなものはありますか。

JIRAプラットフォームAPIはプロジェクト情報を取得でき、JIRAソフトウェアAPIは特定のボードのスプリントを取得できます。しかし、後でそれらのボードのスプリントを取得できるように、特定のプロジェクト(組み合わせ)のスプリントまたは特定のプロジェクトの少なくともボードが必要です

14
phani

あなたはそれを行うことができますが、2つのリソースがあります:

  • まず、これでプロジェクトのすべてのスクラムボードを入手できます。

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

  • クエリパラメータprojectKeyOrIdおよびtypeを使用してフィルタリングします。

  • すべての要素を繰り返し、各ボードのIDとともに以下のURLを使用して、スプリントを取得します。

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

13
Carlos

これはあなたに何か結果を返しますか?

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

その場合は、このプロジェクトを含むビューのIDを見つけて、次のURLを試してください。

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

コードを書く前に、いくつかの仮定を立てましょう。

  1. プロジェクト名と同じボード名
  2. その名前のボードは1つだけになります
  3. スプリントモデルがあります

ここではJerseyクライアントを使用してJIRAからデータを取得しています。

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

ヘルパーメソッド

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

スプリントを取得するためのコード

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

    }
4
phani