i have a branch in git with a .yaml build file which has a script to simply print out the value of the variable declared in the .yaml
if i run the command: az pipelines run --id 999 --variables "myvar=myvar" I expected the variable to change as I am injecting it. it doesnt.
am i misunderstanding what this switch does? if so, what is it supposed to do and/or how can i achieve my goal?
i tried
i tried
i dont understand these SO "quality standards" <= (this line allowed me to save the post)
For az pipelines variable ,there are four commands
az pipelines variable create Add a variable to a pipeline.
az pipelines variable delete Delete a variable from pipeline.
az pipelines variable list List the variables in a pipeline.
az pipelines variable updateUpdate a variable in a pipeline.
You should use az pipelines variable update command to update a variable in a pipeline.
Command sample:
az pipelines variable update --name
Related
Looking for 2 solutions
How to identify the list of pipelines attached with a variable group in AzureDevops
say from the variable group name, i want to understand what are the pipelines (both build and
release) pipelines refering the values from that VG.
How to create a secrete variable in the VG using the az command, while creating the VG itself
az pipelines variable-group create --name <variable_group_name} --variables myvalue=$myvalue
here its creating normal variable, but I want to create secrete variable in the same coomand above while creating the VG itself.
Adding the Details as mentioned in the comments
So here the problem i am facing is
in my curret bash script, we are using the below commands to create variable group and variable together.
az pipelines variable-group create --project=myproject --name $variable_group_name --authorize true --variables mynKey=$my_key
So if I want to split this to commands, not sure how I can obtain the group id for the created variable group.
az pipelines variable-group create --project=$projectname --name $variable_group_name --authorize true
az pipelines variable-group variable create --group-id <?????> --name myKey --project=$projectname --secret true --value $my_key
i want to understand what are the pipelines (both build and release) pipelines refering the values from that VG.
We could only list the pipelines which refering variable group based on check the pipeline one by one with the REST API Definitions - Get. But we could not check the pipeline list based on the variable group.
Details:
Use the RETS API Definitions - List to list all the pipelines, then we could get all the definitionIds.
Loop use the REST API Definitions - Get to get the details info about the pipeline.
How to create a secrete variable in the VG using the az command, while
creating the VG itself
You could use the az command az pipelines variable-group create to create a blank variable group at first.
Then use the another az command az pipelines variable-group variable create to add the variable with the option --secret {false, true}:
az pipelines variable-group variable create --group-id
--name
[--org]
[--project]
[--secret {false, true}]
[--subscription]
[--value]
I am using terraform files with the .net core 2.1 project. I am trying to put a revision number in one of the terraform file and the revision number would be replace with the Build.BuildId of Azure pipeline.
Build.BuildId is predefined variable in Azure pipeline.
I tried a lot but It is not working.
According to the Terraform documentation, we have to create environment variables named TF_VAR_x for Terraform to automatically pick them up.
Another option is to pass the variable value in to the Terraform script by specifying -var 'BuildId=$(Build.BuildId)' on the command line
I have two pipelines(Pipeline A and Pipeline B) configured for build and release and Pipeline A triggers Pipeline B for deployment.
I defined variables on pipeline A and need them on pipeline B to use for deployment . is it possible to pass them between two these pipelines ?.
any leads are much appreciated.
You can use for that variable group. Here you have doc about variable group.
Use a variable group to store values that you want to control and make available across multiple pipelines. You can also use variable groups to store secrets and other values that might need to be passed into a YAML pipeline. Variable groups are defined and managed in the Library page under Pipelines.
What you need is declare the same variable in both pipelines:
variables:
- group: my-variable-group
and for instance if you want to update variable in one pipeline and have this updated value available in second you can use Azure CLI
az pipelines variable-group variable update --group-id
--name
[--detect {false, true}]
[--new-name]
[--org]
[--project]
[--prompt-value {false, true}]
[--secret {false, true}]
[--value]
You should call this command from Azure CLI task
- task: AzureCLI#2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az --version
az pipelines variable-group --group-id value-of-group-id --name some-name --org your-org --project your-project --value some-value
And if you wanto to Trigger one pipeline after another you can use pipeline resource:
resources:
pipelines:
- pipeline: securitylib # Name of the pipeline resource
source: security-lib-ci # Name of the pipeline referenced by the pipeline resource
trigger:
branches:
- releases/*
- master
Just like Krzysztof Madej pointed out, Variable groups will help to share static values across builds and releases pipeline.
What you need is a way to pass variables from one pipeline to another. I'm afraid to say there is no official way to do this for now.
As a workaround you could update the value of your variables inside your variable group. There are multiple ways to handle this, Rest API, powershell, 3rd-party extension. Detail ways please refer answers in this question: How to Increase/Update Variable Group value using Azure Devops Build Definition?
If you want to get the value of variable in the pipeline. Since you have used logging command to update that variable.
What you need to do only is using Rest API to get that particular build log to fetch related info.
How to pass variables from one pipeline to another pipeline in azure devops
You could set some default variables in the release pipeline, then add a inline powershell task to invoke the REST API (Definitions - Update) to update the value of the release definition variable in the build pipeline with values comes from build pipeline.
PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=5.0
Now, we could use the values from multiple pipelines in the release pipeline.
Please check my previous thread for some more details.
Noteļ¼Do not forget to use REST API to restore those changed variables to the default value, so that we could use it next time.
How can I consume variables set in CI pipeline directly in CD pipeline?
Example:
If there are multiply variables declared in one group. How to access particular variable in CI/CD pipeline?
Also how to use variable groups for multiple keyvault's?
Thank you
Setting up global variables
YAML
https://learn.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml
CLASSIC
https://learn.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=classic
Using Variables
YAML
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch
CLASSIC
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=classic%2Cbatch
Examples:
Batch script: %VARIABLE_NAME%
PowerShell script: $env:VARIABLE_NAME
Bash script: $VARIABLE_NAME
Key Vault
https://learn.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=classic#link-secrets-from-an-azure-key-vault
Based on Richard's answer, I managed to set the value of a variable in a variable group to a variable coming from a CI pipeline, and then to read that variable in a CD pipeline.
For that, it is necessary:
To have previously created the variable group, and the variable (its name identified by $(variableName). Let's assume its value would be stored in $(variableValue)).
To find the variable group ID (stored in $(variableGroupId)), which can be done by navigating on Azure DevOps to that variable group. The group ID will then be in the URL.
A Personal Access Token (PAT) with Read & Write access to group variables (called $(personalAccessToken) )
CI pipeline
- powershell: |
az pipelines variable-group variable update --group-id $(variableGroupId) --name $(variableName) --value $(variableValue)
displayName: 'Store the variable in a group variable'
env:
AZURE_DEVOPS_EXT_PAT: $(personalAccessToken)
Then all that's necessary, is to declare the variable group in the CD pipeline. If this variable group is called MyVariableGroup, it can be done in the following way:
CD pipeline
variables:
- group: MyVariableGroup
The variable that was previously set in the CI pipeline, will then be available in the CD pipeline.
I am new to VSTS and Azure Kubernetes. I am building a VSTS CD pipeline. I have added a Deploy to Kubernetes task in my pipeline. I am executing the get command and trying to store the output in the output variables (which is available at the bottom of the Deploy to kubernetes task). I have set the variable name.
I am trying to fetch the value of the above output variable. I have used command line task to set a value to the variable as mentioned below
echo '##vso[task.setvariable variable=myStatusVar;isSecret=false;]$(myvar)'
where myvar is the variable, which is set in the Deploy to kubernetes task as output variable.
After that in another command line task, I am trying to access the myStatusVar variable value, but when I execute the release pipeline, it shows the message:
myvar command not found
Can anyone let me know, how to use the output variable of the Deploy to kuberentes task of VSTS pipeline?
As stated in the comments your variable is 'exposed' as 'myvar.KubectlOutput'
the way you are able to use it in scripts differs based on type of scripting you are doing:
Batch script: %MYVAR_KUBECTLOUTPUT%
PowerShell script: $env:MYVAR_KUBECTLOUTPUT
Bash script: $MYVAR_KUBECTLOUTPUT
Azure Devops 'designer view': $(myvar.KubectlOutput)
For more details on this see the documentation on using variables in Azure DevOps: https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch