Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

deployment variables not working

Asim AlTwaijri May 30, 2019

Hello,

 

i'm trying to use deployment variables as follows:

 image: node:8.12.0 

definitions:
steps:
- step: &build-stg-angular
caches:
- node
script: # Modify the commands below to build your repository.
- credentials="${server_username}@${server_ip}"
- npm install
- npm run build-stg -- -c ${client}



pipelines:
custom:
asim-stg:
- step: *build-stg-angular
- step:
name: Deploy to staging server.
deployment: asim-stg
script:
- echo "Deploying"

 

but it doesn't recognise the variables!

 

6 answers

1 accepted

7 votes
Answer accepted
Deleted user March 27, 2020

I managed to get this working!
Just to be clear in the sample above the deployment variables refer to 

${server_username}@${server_ip}

If that is the case, which I suspect it is I have the answer. 

Here is a simple example..

Here I'm trying to reference MY_DEPLOYMENT_VARIABLE_1 and MY_DEPLOYMENT_VARIABLE_2 however only MY_DEPLOYMENT_VARIABLE_2 will be recognized from the deployment variables.
The reason for this is simple.


Deployment variables are only recognized in the deployment block i.e. the block where we specify "deployment:Development". WHAT!

Further to this remember "deployment:Development" can only be used once.

Took me days to realize this :-(

Remember to ^^ Up Vote if this helps ;-)


yml.JPG 

gagan_suie July 11, 2020

Thank you so much for this answer. After looking through 1001 tutorials and ALL of bitbucket pipelines sh*t documentation. This solved it.

Jiadong.Yu July 23, 2020

I think this would be the right answer. I'll give you feedback in 5 mins.

Jiadong.Yu July 23, 2020

You are totally right. The deployment variables are only used in deployment block.

But any ideas about how to set build variables not explicitly configured in yaml file and not every time to type in the run pipeline input?

Emre December 17, 2020

Thank you so much, documentation is terrible indeed @[deleted] 

1 vote
Saso March 27, 2020

It doesn't work for me either. Can someone check on this please?

1 vote
Asim AlTwaijri June 2, 2019

I don't know why, but it reads Repository variables successfully!

but it doesn't recognize environments variables!!

image.png

Matt February 20, 2020

I'm having the same issue.

0 votes
Rick Measham January 12, 2021

Please vote for this "Suggestion" from March 2019 regarding this craziness: https://jira.atlassian.com/browse/BCLOUD-18261

In the comments there are a number of workarounds.

Personally, I'm exporting the variable into a text file in the step that references the deployment, and then setting the variable to the content of the text file in the later step:

pipelines:
branches:
main:
- step:
name: Build react app
deployment: Production
script:
- echo -n "$CLOUDFRONT_DISTRIBUTION" > ./cloudfront.txt
artifacts:
- cloudfront.txt
 - step:
name: Deploy to S3
- step:
name: Invalidate Cloudfront Cache
script:
- pipe: atlassian/aws-cloudfront-invalidate:0.1.1
variables:
DISTRIBUTION_ID: "$(cat ./cloudfront.txt)"

(Note that there's a lot removed from this example. The relevent pieces are line 8 where the variable is put into a text file, line 10 where it's stored as an artifact, and line 18 where it's read back into the varaible)

This is madness and a bad design decision at Atlassian HQ that I hope gets fixed soon. This is the second time this has bitten me and I had to hunt around for the solution as it's so unintuitive.

0 votes
Deleted user March 23, 2020

Has anyone solved this??
We are facing the same issue and it's causing a fair bit of extra work.

Thanks

0 votes
helciomacedo September 14, 2019

Should the variable be just $server_ip instead of bamboo like ${server_ip} ?

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events