bashrestcurlbamboo

Gather all the Jira Tickets in the lastest Bamboo Release using a Bamboo Script Task


Long time stackoverflow reader, first post in a very long time, thanks for all the help over the years!

I'm trying to automate the post release process inside of Bamboo, I have a the following structure in my build plan (upstream):

After building my project I have a successful build with i.E. #14 and the tag 'v5.10.4.1' in ButBucket (Git).

Following this I created a Deployment Project (downstream) that has these script tasks:

  1. Create fixVersion in Jira
  2. Gather all the Jira Tickets in the lastest Bamboo Release
  3. Add all Bamboo Release Tickets to Jira Release

The steps use curl in some form or another and the REST API either from Jira or Bamboo, Step 1 works with any problems as long as the fixVersion hasn't been created in Jira previously.

For Step 2 I did a test from my workstation with success using this command to get the issues and save them as a text file for Step 3 afterwards:

curl -X GET --user ${bamboo.user}:${bamboo.password} -H 'X-Atlassian-Token: no-check' "https://server-name/rest/api/latest/result/${bamboo.buildResultKey}.json?expand=jiraIssues" -o >(grep -o -E '"(Ticket-KEY)-\d*"' | tr -d '"' > /tmp/issueKeys.txt) && cat /tmp/issueKeys.txt

I tried doing this as a Script Task during my deployment as either inline or file based, this is my script:

#!/bin/bash
 
# Variables: ${bamboo.user}:${bamboo.password}; ${bamboo.buildResultKey}
# Gather all the Jira Tickets in the lastest Bamboo Release as the second step
 
echo "==> Gather all the Jira Tickets in the lastest Bamboo Release: yes"
 
curl -X GET --user ${bamboo.user}:${bamboo.password} -H 'X-Atlassian-Token: no-check' "https://server-name/rest/api/latest/result/${bamboo.buildResultKey}.json?expand=jiraIssues" -o >(grep -o -E '"(Ticket-KEY)-\d*"' | tr -d '"' > /tmp/issueKeys.txt)
 
echo "==> The following Jira Tickets from the lastest Bamboo Release have been gathered"

# for debugging run this to verfiy the results in the Bamboo deployment logs
cd /tmp/ && ls -la && cat issueKeys.txt && nl issueKeys.txt

I ran into the following problems:

13-Dec.-2023 14:05:53   <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
13-Dec.-2023 14:05:53   <html><head>
13-Dec.-2023 14:05:53   <title>404 Not Found</title>
13-Dec.-2023 14:05:53   </head><body>
13-Dec.-2023 14:05:53   <h1>Not Found</h1>
13-Dec.-2023 14:05:53   <p>The requested URL was not found on this server.</p>
13-Dec.-2023 14:05:53   <hr>

It seems it is not possible to curl the Bamboo REST API from inside of Bamboo it's self but it should be possible, I found this in the Atlassian documentation: curl -u <ADMIN_USERNAME>:<PASSWORD> <BAMBOO_URL>/build/admin/ajax/getDashboardSummary.action

Maybe someone has solved this already but I can't find a thread or documentation. Many thanks for help or ideas!


Solution

  • After lots of research (googling was not a help here) I found the "actual" Bamboo REST API documentation with examples of the correct URI:

    http://myhost.com:8085/bamboo/rest/api/latest/plan.json
    

    or as an example of the structure:

    http://host:port/rest/api-name/api-version/resource-name
    

    In my use case of above where I was trying to curl the Bamboo REST API from a Bamboo Script Task, I am now using the following URI without issues:

    "http://localhost:8085/rest/api/latest/result/${bamboo.buildResultKey}.json?expand=jiraIssues"
    

    Issue is resolved.