Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Create custom report to track status of plan branches

christok July 26, 2019

I'm looking to create a customer report but I can't find any documentation or examples on how to do this. Any guidance would be appreciated!

1 answer

0 votes
Daniel Santos
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 29, 2019

Hello @christok

Please tell me that you can use a bash script for that!
Otherwise, you will need to transcript the script I just did for you.

It uses the following rest APIs:

  • /rest/api/latest/project
    Get the list of projects
  • /rest/api/latest/project/$PROJECT?expand=plans
    Get the plans from a given project
  • /rest/api/latest/plan/$PLAN/branch
    Get the plan branches from a given plan
  • /rest/api/latest/result/$PLAN_BRANCH
    Get the plan branches status

Reference: Bamboo REST API documentation 6.9.2

It also uses ./jq command-line JSON processor to filter the results.

#!/bin/bash

USER=admin
PASSWORD=admin
BAMBOO_URL=http://localhost:8085/bamboo

PROJECTS=`curl -s -u $USER:$PASSWORD \
-H 'Accept: application/json' \
-X GET "$BAMBOO_URL/rest/api/latest/project" \
| jq -r '.projects.project[] | .key'`

PLANS=""
for PROJECT in $PROJECTS
do
    PROJECT_PLANS=`curl -s -u $USER:$PASSWORD \
    -H 'Accept: application/json' \
    -X GET "$BAMBOO_URL/rest/api/latest/project/$PROJECT?expand=plans" \
    | jq -r '.plans.plan[] | .key'`
    PLANS+=" $PROJECT_PLANS"
done

PLANS_AND_BRANCHES=""
for PLAN in $PLANS
do
    PLANS_AND_BRANCHES+=" $PLAN"
    BRANCHES=`curl -s -u $USER:$PASSWORD \
    -H 'Accept: application/json' \
    -X GET "$BAMBOO_URL/rest/api/latest/plan/$PLAN/branch" \
    | jq -r '.branches.branch[] | .key'`
    PLANS_AND_BRANCHES+=" $BRANCHES"
done

for PLAN_BRANCH in $PLANS_AND_BRANCHES
do 
    curl -s -u $USER:$PASSWORD \
    -H 'Accept: application/json' \
    -X GET "$BAMBOO_URL/rest/api/latest/result/$PLAN_BRANCH" \
    | jq -r '.results.result[0] | "Plan:" + .key + " Name:\"" + .plan.name + "\" lifeCycleState:" + .lifeCycleState + " buildState:" + .buildState'
done


Another option is to build a Bamboo plugin for that. If you decide on this approach I suggest you follow this document:

I hope that helps.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events