Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Identify critical builds

Focus on the most critical builds that need timely attention. There are multiple ways to specify what build plans should be included in the report.

  1. Simple list of plan keys (fully qualified by project)
  2. Simple list of plan keys in a specific project
  3. Plans in a project with regex and other filtering criteria
Code Block
languagebash
themeMidnight
acli examplegear.bamboo -a getBuildReportList --project EXAMPLE --list PLAN1,PLAN2,PLAN3 --field notState=UNKNOWN


Choose columns to report

Select the minimum columns needed. getBuildReportList already minimizes the columns reported. In this example, we want a very targeted report, we remove the first 3 columns.

Code Block
... --columns -1,2,3


Choose a date format

Specify a date format that best matches specific needs. We use a very concise to minimize line length. 

Code Block
... --dateFormat "EEE HH:mm"


Modify data

Format the data for the report. In this example, we are going to report as a text table, without wrapping, and with modified test result headings to minimize line length. A text table looks best in Slack. 

Code Block
languagebash
themeMidnight
acli csv -a copyCsv --sourceFile @temp --outputType text --headingAugments ",,Succ,Fail,Skip,Quar" --options screenwidth=999


Send to Slack

Assumes you already have a slack token, acli configured to use the token, and access granted to allow the CLI to send to your channel - see Access Tokens.

We are using markdown code format to get fixed width lines with active links to click on the url to get to the build quickly.

Code Block
languagebash
themeMidnight
slack -a sendMessage --channel ${bamboo.channel} -f @temp --options markdown=code


Full example

We use a Bamboo plan with a script task. This assumes acli is on the path and configured appropriately to access the servers needed. This example uses linux style escaping. We use the CLI temp file for automatically handling of file output 

Code Block
languagebash
themeMidnight
titleExample
acli -a run \
  -i "bamboo.examplegear -a getBuildReportList --project EXAMPLE --list PLAN1,PLAN2,PLAN3 -f @temp --field notState=UNKNOWN --dateFormat \"EEE HH:mm\" --columns -1,2,3" \
  -i "csv -a convertCsv --sourceFile @temp -f @temp --outputType text --headingAugments \",,Succ,Fail,Skip,Quar\" --options screenwidth=999 " \
  -i "slack -a sendMessage --channel ${bamboo.channel} -f @temp --options markdown=code "


Results


Code Block
languagetext
 Completed  State       Succ  Fail  Skip  Quar  URL                                                                    
 Wed 08:36  SUCCESSFUL     0     0     0     0  https://bamboo.examplegear.com/browse/EXAMPLE-PLAN1-30  
 Tue 19:06  SUCCESSFUL    76     0     0     0  https://bamboo.examplegear.com/browse/EXAMPLE-PLAN2-31                  
 Wed 08:35  SUCCESSFUL   996     0   119     7  https://bamboo.examplegear.com/browse/EXAMPLE-PLAN3-32 


Tip

If lines get wrapped in Slack, use control or cmd - (minus) to scale back font size.


...

Append data from other projects or servers


Code Block
languagebash
themeMidnight
titleExample
acli -a run \
  -i "bamboo.examplegear  -a getBuildReportList --project EXAMPLE --list PLAN1,PLAN2,PLAN3 -f @temp --field notState=UNKNOWN --dateFormat \"EEE HH:mm\" --columns -1,2,3" \
  -i "bamboo2.examplegear -a getBuildReportList --project EXAMPLE2 --regex PLAN.* -f @temp --append --field notState=UNKNOWN --dateFormat \"EEE HH:mm\" --columns -1,2,3" \
  -i "csv -a convertCsv --sourceFile @temp -f @temp --outputType text --headingAugments \",,Succ,Fail,Skip,Quar\" --options screenwidth=999 " \
  -i "slack -a sendMessage --channel ${bamboo.channel} -f @temp --options markdown=code "


Show where report came from

Add the following to your script if you are running it from Bamboo

Code Block
languagebash
themeMidnight
# Show where the message comecomes from - this build! This makes it easy to re-run the report after the problems have been fixed:    
acli slack -a sendMessage --channel ${bamboo.channel} --content '[{"type": "context","elements": [{"type": "mrkdwn","text": "Reported from ${bamboo.resultsUrl}"}]}]'


Use script variables

When running from a Bamboo using a script, you can use simple scripting to help standardize the acli action across multiple builds for similar reports. This highlights the key differences and makes it easier to read.

Code Block
languagebash
themeMidnight
titleExample
linenumberstrue
#!/bin/bash -x
set -e  # error on failure

site=bamboo.examplegear
list=EXAMPLE-NIGHTLY,EXAMPLE-JIRAACCESSCHECK,EXAMPLE2-UNKNOWNLINKS,EXAMPLE2-BUILDSTATUS,EXAMPLE2-DEVOPS


acli -a run \
  -i "${site} -a getBuildReportList --list ${list} -f @temp --field notState=UNKNOWN --dateFormat \"EEE HH:mm\" --columns -1,2,3" \
  -i "csv -a convertCsv --sourceFile @temp -f @temp --outputType text --headingAugments \",,Succ,Fail,Skip,Quar\" --options screenwidth=999 " \
  -i "slack -a sendMessage --channel ${bamboo.channel} -f @temp --options markdown=code "


# Show where the message comecomes from - this build! This makes it easy to re-run the report after the problems have been fixed:
acli slack -a sendMessage --channel ${bamboo.channel} --content '[{"type": "context","elements": [{"type": "mrkdwn","text": "Reported from ${bamboo.resultsUrl}"}]}]'


...