I’m new to Azure Pipelines and I’m trying to handle the same variable name in different variable groups. I can’t be too specific for security reasons, but the general gist is that I have multiple environments that I access via APIs, and I would like to be able transfer data any which way between these environments. The general set up is as such:
I have variable groups of different names (there are currently 2 for this poc, but will be 10-12 in prod)
'alpha'
'beta'
that contain the same variables:
'env' # hoping to use as a key from parameters to fetch this data
'url' # api url
'token' # api key
I would like to be able to get a source and destination environment from the user, and then set variables within the pipe sourceUrl, sourceEnv and sourceToken – destUrl, destEnv, destToken from these variable groups.
I’m aware on the documentation the variables with the same name are just set to the value of the last listed variable group, so I’m wondering if I have to use a bash script to set these variables dynamically. Hopefully the yaml makes this a little clearer:
trigger: none
parameters:
- name: sourceEnv
type: string
default: alphaDev
values:
- alphaDev
- betaDev
displayName: 'Source Environment'
- name: destEnv
type: string
default: betaDev
values:
- alphaDev
- betaDev
displayName: 'Destination Environment'
variables:
- group: ${{ parameters.sourceEnv }} # i want to set sourceUrl sourceEnv and sourceToken to these values
- group: ${{ parameters.destEnv }} # i want to set desturl destEnv and destToken to these values
# so essentially the variables would be:
- name: sourceUrl
value: ${{ parameters.sourceEnv}}.$(url)
- name: sourceToken
value: ${{ parameters.sourceEnv}}.$(token)
# and same for destination
I have seen that you can directly declare the variable groups inside of jobs, which is what I’m doing currently with the POC.
However as the same variables are required across multiple jobs I wondered if there’s a way to declare them once at the start of the file. Granted, this is mainly for maintainability, as once this is completed it will be others who manage the code.
As for the code, I wondered if setting variables immediately after calling the group might work
variables:
- group: ${{ parameters.sourceEnv }}
- name: sourceUrl
value: $(url)
- group: ${{ parameters.destEnv }}
- name: destUrl
value: $(url)
but this just sets them both to the destEnv url value.
Hopefully my requirements are clear, and perhaps this question is incredibly novel, but as I said I’m new to azure pipelines and am hoping someone is able to assist with with say a bash script to make this possible, unless there’s a straight forward way I’ve missed 🙂
Joseph Thomas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.