Description

Bamboo notification support is an opportunity to do something after a build has completed. The Bamboo notification framework allows built-in and customized notifications to be triggered after the completion of the build. Bamboo also provides a number of built-in conditions that determine when notifications can be triggered. We are taking advantage of the notification protocol to allow CLI actions to be used triggered by the notification framework. While many CLI can be considered traditional notifications (like Hipchat sendMessage), the support provided is open ended and allows for any CLI action to run. This enables some unique scenarios that solves some long requested use cases involving doing things after a build has completed. With CLI conditional running of actions, even more advanced conditioning can be done to do things like running some action if a build was successful and different actions if a build was not successful.

Use Cases

CLI notifications enable a number of diverse use cases:

Traditional Notifications

  1. Slack - send message or notification
  2. Jira - add comment
  3. Confluence - add comment
  4. Bamboo - add comment

Advanced Use Cases

  1. Jira - create issue
  2. Bamboo - add labels
  3. Bamboo - queue build
    1. To do additional tear-down activities based on build result
    2. Retry build conditioned on first failure or similar

Features

UI Configuration

hipchat -a sendMessage --room Bob --message "Failed: ${bamboo.buildResultKey}" --token ${bamboo.chatToken} --server https://chat.examplegear.com 


-a runIf --options negative -p *** --regex (?i)((SUCCESS)|([2-9]\d*)) --value ${bamboo_buildState}-${bamboo_restartCount} -i "-a queueBuild --build ${bamboo.buildResultKey}"


Recommend using Bamboo 6.3 and higher for nested variable support which makes configuration easier.

Pseudo Bamboo Variables

Some new pseudo Bamboo variables have been defined to provide some additional variables that can be used in CLI Notifications. 


Pseudo VariableTypeValuesReference in CLI NotificationReference in Bamboo VariableSince
buildStateStringSuccessful, Failed, Unknown${bamboo.buildState}${bamboo_buildState}
isRebuildStringYes, No${bamboo.isBuild}${bamboo_isBuild}
restartCountIntegerNumber of times the build has been restarted${bamboo.restartCount}${bamboo_restartCount}
successfulTestCaseCountIntegerNumber of successful test cases${bamboo.successfulTestCaseCount}${bamboo_successfulTestCaseCount}8.0.0
failedTestCaseCountIntegerNumber of failed test cases${bamboo.failedTestCaseCount}${bamboo_failedTestCaseCount}8.0.0
quarantinedTestCaseCountIntegerNumber of quarantined test cases${bamboo.quarantinedTestCaseCount}${bamboo_quarentinedTestCaseCount}8.0.0
skippedTestCaseCountIntegerNumber of skipped test cases${bamboo.skippedTestCaseCount}${bamboo_skippedTestCaseCount}8.0.0
ignoredTestCaseCountIntegerNumber of ignored test cases${bamboo.ignoredTestCaseCount}${bamboo_ignoredTestCaseCount}8.0.0
totalTestCaseCountIntegerNumber of total test cases${bamboo.totalTestCaseCount}${bamboo_totalTestCaseCount}8.0.0
fixedTestCaseCountIntegerNumber of fixed test cases${bamboo.fixedTestCaseCount}${bamboo_fixedTestCaseCount}8.0.0


To avoid a Bamboo error, when referencing a pseudo variable in a standard Bamboo variable, use the alternate form of reference. This is because Bamboo tries to validate strings that look like Bamboo variables.