How to use Bamboo variables in an app's code
Asked by Samuel VanFossen:

In my app that's being built on Bamboo, I have the following code:

```
"build-aem": {
  "builder": "@nrwl/workspace:run-commands",
  "options": {
  "commands": [
    {
      "command": "mvn --batch-mode release:update-versions -DdevelopmentVersion=${bamboo.buildNumber} -f ./apps/americas-aem/pom.xml"
    },
    {
      "command": "mvn clean install -f ./apps/americas-aem/pom.xml"
    }
  ],
  "parallel": false
  }
}
```

What I'd like to happen is for the "${bamboo.buildNumber}" to be replaced with the actual Bamboo variable, as shown on this page:

<https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html#Bamboovariables-Build-specificvariables>

Do you know of a way to make this happen?


Answers:
author: Eduardo Alvarenga
body: Hi [@Samuel VanFossen](/t5/user/viewprofilepage/user-id/4379522) , welcome to **Atlassian Community**!

All [bamboo variables](https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html) are accessible using **${bamboo.\<variablename\>}** in configuration, or **${bamboo_\<variablename\>}** in scripts.  

![tick](/html/@FB21E167CF5FC78FA9216CD8178453B3/images/emoticons/tick.png "tick") In your specific case with NPM you should use *system variables (scripts)* instead, as Bamboo variables are not accessible within that node workspace.

As documented in [System variables - Using variables in bash](https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html#Bamboovariables-Systemvariables), you should:
> **Using variables in bash**
>
> Bamboo variables are exported as bash shell variables. All full stops (periods) are converted to underscores. For example, the variable `bamboo.my.variable` is **`$bamboo_my_variable`** in bash. This is related to File Script tasks (not Inline Script tasks).

E.g. assuming you want to print Bamboo's**bamboo.buildNumber** with the following code:

```
"build-aem": {
  "executor": "@nrwl/workspace:run-commands",
  "options": {
    "command": "echo This is my Bamboo Build number: ${bamboo_buildNumber}"
  }
}
```

and your **bamboo.buildnumber = 123 --** it will produce the following output:

```
12-May-2021 12:26:20 
12-May-2021 12:26:20 > bamboo@0.0.0 nx /home/bamboo/bamboo-agent-home/xml-data/build-dir/MFP-MVFP-JSJ
12-May-2021 12:26:20 > nx "build-aem"
12-May-2021 12:26:20 
12-May-2021 12:26:21 
12-May-2021 12:26:21 > nx run bamboo:build-aem 
12-May-2021 12:26:21 This is my Bamboo Build number: 123
12-May-2021 12:26:21 
12-May-2021 12:26:21 ???????????????????????????????????????????????
12-May-2021 12:26:21 
12-May-2021 12:26:21 > NX SUCCESS Running target "build-aem" succeeded
```

Additionally, if your code already contains specific variables that are meant to be portable and/or you cannot amend it with the the ***bamboo_*** prefix, you can alternatively declare a value for those variables under ***Advanced Options -\> Environment Values*** -- this time using bamboo variables, E.g.:

In **Advanced Options -\> Environment Values:**

```
BUILD_NUMBER=${bamboo.buildNumber}
```

In **code:**

```
"build-aem": {
  "executor": "@nrwl/workspace:run-commands",
  "options": {
    "command": "echo This is my Bamboo Build number: ${BUILD_NUMBER}"
  }
}
```

comments: author: Samuel VanFossen
body: Thanks! This worked for me.