Bamboo 4.4 : Using global, plan or build-specific variables

Variables can be used to set static values that are used when building plans in Bamboo.

  • Global variables are defined across your entire Bamboo instance, and have the same (static) value for every plan that is built by Bamboo.
  • Plan variables are similar to global variables, but are defined for specific plans. Plan variables override global variables with the same name. You can also override a plan variable for a build, if you have triggered the build manually.
  • Build-specific variables are evaluated by Bamboo dynamically at build time. The source of a build-specific variable can either be a Bamboo property or one of the default plugins (assuming they have been enabled).
  • System variables also apply across your entire Bamboo instance and inherit their values from system or environment variables of the same name.

Specifying variables

Global variables

See Defining global variables for information on defining global variables.

The usage format for all global variables is:

${bamboo.globalVarName}

Plan variables

See Defining plan variables for information on defining plan variables. You can override a plan variable for a build, if you have triggered the build manually. For details, see Triggering a plan build manually.

The usage format for all plan variables is:

${bamboo.varName}

Build-specific variables

The following build-specific variables are also available by default:

Build-specific variable

Source

Description

bamboo.buildKey

Bamboo property

The job key for the current job, in the form PROJECT-PLAN-JOB, e.g. BAM-MAIN-JOBX

bamboo.buildResultKeyBamboo propertyThe result key when this job executes, in the form PROJECT-PLAN-JOB e.g. BAM-BOO-JOB1
bamboo.buildResultsUrlBamboo propertyThe URL of the result in Bamboo once the job has finished executing.

bamboo.buildNumber

Bamboo property

The Bamboo build number, e.g. 123

bamboo.buildPlanName

Bamboo property

The Bamboo plan name e.g. Some Project name - Some plan name

bamboo.buildTimeStamp

Bamboo property

The time when build was started in ISO 8601 format e.g. 2010-01-01T01:00:00.000+01:00

bamboo.buildForceCleanCheckout

Bamboo property

Whether the "Force Clean Build" option was used, values:true/false

bamboo.build.working.directory

Bamboo property

The working directory that the build is being executed on

bamboo.ManualBuildTriggerReason.userNameBamboo propertyThe user who triggered the manual build

bamboo.repository.revision.number

Plugin

The revision number

bamboo.repository.branch.name The repository branch name (for Bamboo version 4.2 or later)

bamboo.repository.previous.revision.number

Plugin

The previous revision number (might not exist if for example is initial build)

bamboo.custom.svn.revision.number

Plugin

(For Subversion only) The revision number

bamboo.custom.svn.lastchange.revision.number

Plugin

(For Subversion only) The last changed revision number

bamboo.custom.svn.username

Plugin

(For Subversion only) User name used for repository authentication

bamboo.repository.svn.repositoryUrl

 

(For Subversion only) The repository url

bamboo.custom.cvs.last.update.time

Plugin

(For CVS only) The last updated timestamp

bamboo.custom.cvs.last.update.time.label

Plugin

(For CVS only) The last updated timestamp to be used as a label for post build result labelling. The spaces in the cvs version string are replaced with '_'

bamboo.custom.p4.revision.number

Plugin

(For Perforce only) The change set number

bamboo.custom.p4.username

Plugin

(For Perforce only) User name used for repository authentication

bamboo.custom.p4.port

Plugin

(For Perforce only) Port used for repository communication

bamboo.custom.p4.client

Plugin

(For Perforce only) Client used for repository communication

bamboo.repository.git.branch (For Git only) The branch

bamboo.repository.hg.repositoryUrl

 

(For Mercurial only) The repository url

bamboo.repository.hg.branch

 

(For Mercurial only) The branch

bamboo.repository.hg.username

 

(For Mercurial only) User name used for repository authentication

  • System variables also apply across your entire Bamboo instance and inherit their values from system or environment variables of the same name.

The usage format for all build-specific variables is:

${bamboo.varName}

JIRA variables

Note that these JIRA variables can be accessed from a Bamboo build only when that build was triggered by releasing a version in JIRA.

JIRA variableDescription
${bamboo.jira.baseUrl}The URL of your JIRA server.
${bamboo.jira.projectKey}The key of the triggering JIRA project.
${bamboo.jira.projectName}The name of the triggering JIRA project.
${bamboo.jira.version}The release version of the triggering JIRA project.
${bamboo.jira.username}The username of the user who triggered the release build.

System variables

The usage format for all system variables is:

${system.<variable>}

For example, if you have a system variable MYPATH=C:\MyPath; you can use a Bamboo system variable system.MYPATH which will inherit the same value as the system variable.

Using variables

Variables can be used in the following fields of your build plan:

Field

Global

Build-specificSystem

Goal (for Maven builders only)
— see Configuring tasks

(tick)

(tick)(tick)

Build File (for Ant and NAnt builders only)
— see Configuring tasks

(tick)

(tick)(tick)

Target (for Ant and NAnt builders only)
— see Configuring tasks

(tick)

(tick)(tick)

Options (for NAnt builders only)
— see Configuring tasks

(tick)

(tick)(tick)

Script (for Scripts only)
— see Configuring tasks

(tick)

(tick)(tick)

Argument (for Scripts and Custom Commands only)
— see Configuring tasks

(tick)

(tick)(tick)

Environment Variables
— see Configuring tasks

(tick)

(tick)(tick)

Repository URL (for Subversion repositories only)
— see Specifying the source repository

(tick)

(error)(tick)

Web Repository URL (for Subversion, CVS and Perforce repositories)
— see Specifying the source repository

(tick)(error)(tick)

CVS Root (for CVS repositories only)
— see Specifying the source repository

(tick)

(error)(tick)

Branch name (for CVS repositories only)
— see Specifying the source repository

(tick)

(error)(tick)

 

Examples of variables usage

Maven example

For example, you may want your Maven 2 version to be determined by Bamboo. In Maven 2 pom.xml you may have:

...
<groupId>com.atlassian.boo</groupId>
<artifactId>boo-test</artifactId>
<packaging>jar</packaging>
<version>1.1.${bamboo.buildNumber}-SNAPSHOT</version>
...

You can then specify the following in the Goal field of your build plan:

clean package -DbambooBuildNumber=${bamboo.buildNumber}

When the command runs, Bamboo will replace the buildNumber with the actual number (e.g. 1102), which will be passed to the underlying Maven build to use. The command will then produce a jar that looks like this: boo-test-1.1.1102-SNAPSHOT.jar.

Ant example

You can then specify the following in the Target field of your build plan:

-f build.xml -DbambooBuildNumber=${bamboo.buildNumber}

When the command runs, Bamboo will replace the buildNumber with the actual number (e.g. 1102), which will be passed to the underlying Ant build to use.

Specifying capabilities as variables

You can also specify a capability to be used in a similar way to a global variable.

The format of the capability should be as follows:

${bamboo.capability.<capability_key>}

For example,

  • Custom

    ${bamboo.capability.<capability_key>}
  • JDK

    ${bamboo.capability.system.jdk.<jdk_label>}
  • Builder

    ${bamboo.capability.system.builder.<builder_type>.<builder_label>}
    e.g. ${bamboo.capability.system.build.maven.Maven1}
  • Perforce

    ${bamboo.capability.system.p4Executable}

If you click on a capability, the specific capability key will be contained in the URL.

Please note, the space characters in the URL will be replaced with '+' characters. We recommend that you do not use capability labels with space characters, if you wish to use them as variables. A possible solution for space characters is to format them with '${}' symbols, however, this does not work in all cases.

Using capabilities

Global and Build-Specific Variables can be used in a specific fields of your build plan, as specified above. For capabilities,

  • System Capabilities are available to all of these fields, (i.e. global and build-specific).
  • Agent Capabilities (i.e. agent-specific and shared/server capabilities) are available only to the build-specific fields. (i.e. not available to Repository URL, CVS Root or Branch name.)

For example,

If you wanted to specify a system variable, but have it set to different values on each agent, do the following:

  1. Set the following as a system environment variable field on the Builder tab:

    ${bamboo.capability.thatsystemvariable}
  2. Specify the system environment variable as a custom capability on each of your agents, and set to the capability to the different values, as desired.