I would like to share a variable across two steps.
I define it like:
- export MY_VAR="FOO-$BITBUCKET_BUILD_NUMBER"
but then when I try to print it in other step:
- echo $MY_VAR
it's empty.
How I can share such variable?
You can now export variables and use them in all subsequent steps as shown below.
pipelines:
default:
- step:
name: Export Variable
script:
- echo "VAR_1=12345" >> $BITBUCKET_PIPELINES_VARIABLES_PATH
output-variables:
- VAR_1
- step:
name: Use Variable
script:
- echo $VAR_1
The feature was first released and explained on 31st of March 2025: [Atlassian News Blog] Easily share data between steps in Bitbucket Pipelines.
This feature is explicitly meant to replace the old way:
Previously, sharing variables between steps required more effort than desired, doing things like saving variables in an artifact file and using that artifact in subsequent steps. With this new feature, you can now share variables seamlessly and efficiently, reducing complexity and potential errors in your pipeline configurations. ~ the Blog article
Read the docs: Output Variables step option (in Bitbucket Pipelines configuration reference).
I tested it in a branch test-output-variables-and-anchors
:
definitions:
steps:
- step: &output-variables
name: Export Variable
script:
- echo "VAR_1=12345" >> $BITBUCKET_PIPELINES_VARIABLES_PATH
- echo "VAR_2=67890" >> $BITBUCKET_PIPELINES_VARIABLES_PATH
output-variables:
- VAR_1
- VAR_2
- step: &log-variables
name: Log Variables
script:
- echo $VAR_1
- echo $VAR_2
pipelines:
branches:
test-output-variables-and-anchors:
- step: *output-variables
- step: *log-variables
This worked and flawlessly did output the VAR_1
and VAR_2
values correctly in the second step.