Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to update a repository variable in my pipeline

Daeruin
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
February 27, 2021

I am using a repository variable to store a patch version number for a certain branch. In my pipeline script, I use the Bitbucket API to get the value of the variable, increment it, and update the value of the variable. However, if I attempt to use the variable after that point in the script, it seems to retain its old value.

```
script:
# Get value of VERSION_NUM from BitBucket API and assign it to VERSION_NUM_NEW
- VERSION_NUM_NEW=$( curl -X GET -u "<username>":"<password>" --url 'https://api.bitbucket.org/2.0/repositories/<username>/<reposlug>/pipelines_config/variables/%7B<uuid>%7D' | jq -r .value )
- echo $VERSION_NUM_NEW # Value is 2
- echo ${VERSION_NUM} # Value is 2
# Increment VERSION_NUM_NEW
- ((VERSION_NUM++))
- echo $VERSION_NUM_NEW # Value is 3
- echo ${VERSION_NUM} # Value is 2
# Use BitBucket API to update VERSION_NUM_1_12 to new version number
- curl -vX PUT -u "<username>":"<password>" --url 'https://api.bitbucket.org/2.0/repositories/<username>/<reposlug>/pipelines_config/variables/%7B<uuid>%7D' -H 'Content-Type:application/json' -d "{\"key\":\"VERSION_NUM\",\"value\":\"$VERSION_NUM_NEW\"}"
- echo $VERSION_NUM_NEW # Value is 3
- echo ${VERSION_NUM} # Value is still 2! What??

```

Later, when I log into Bitbucket to check the value of VERSION_NUM, it has indeed been updated as I expect. It just seems that inside the script, it somehow retains its old value.

I have a workaround, but it bothers me that I can't seem to get the correct value of my variable while in the script. Am I doing something wrong?

1 answer

0 votes
Halyna Berezovska
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
March 2, 2021

@Daeruinwhen you have updated the value - you will have value changed either in PUT response or in response of NEW get request to the variables.

This is the question of bash script you're using - you re not overriding $VERSION_NUM variable in local script section.

So you have to update it somehow. BUT be awarte that if variable is secured , it will not be show in API responses.

 

Also, we have embedded variable BITBUCKET_BUILD_NUMBER  that is global variable that represents your build number. Perhaps, it will be also useful for you to know.

Regards, Galyna

Daeruin
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
March 11, 2021

I am updating ${VERSION_NUM} on the third to last step of my script with a PUT call. I can confirm that the value is in fact getting updated at some point after the script runs. I can see the updated value when I check the value manually in my repository settings. But when I try to get the value after the PUT statement in my script, the value does not seem to be changed.

I was previously using BITBUCKET_BUILD_NUMBER, but this is no longer sufficient. I need to update version numbers independently for different branches of my code.

Halyna Berezovska
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
March 26, 2021

@DaeruinI guess, this is due to local cache. If you really need to update VERSION_NUM var in the exact same step - I think, you can parse the response of PUT call.

Or explain us your use case, and we can help constructing well-written pipeline.

Regards, Galyna

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events