J'essaie de définir la valeur variable de pipeline Azure dans PowerShell. J'ai créé une variable winversion
dans le pipeline Azure. Maintenant, dans une tâche PowerShell, je souhaite affecter certaines valeurs à la variable winversion
. Ma question simple est de savoir comment puis-je modifier la valeur d'une variable de pipeline Azure au moment de l'exécution?
Write-Host "Main value is $winversion"
$env:WINVERSION="abhinav";
Write-Host "Modified value is $env:WINVERSION"
Write-Host "Main value is $(winversion)"
FirstLine Imprimer: La valeur d'origine est 123
Tirmine Imprimer: La valeur modifiée est Abhinav
Print quatrième ligne: 123
Je veux quand je change de la valeur de Winversion de "123" à "Abhinav", donc cela modifie en fait la valeur variable de pipeline à Abhinav.
Je veux mettre à jour cette variable via PowerShell. J'utilise un script PowerShell appelant l'API et j'essaie de mettre à jour sa variable mais d'obtenir la page non trouvée par erreur: -
param(
[string]$winVersion
)
$body = "{ 'definition' : { 'id' :85}
}"
$valueName="Winver"
$definitionId=85
$User=""
$Password=""
$base64authinfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $User, $Password)))
$Uri = "https://Muac.visualstudio.com/OSGCXE/_apis/release/releases?api-version=2.0"
$urlDef = "https://Muac.visualstudio.com/OSGCXE/_apis/release/definitions/" + $definitionId + "?api-version=2.0"
$definition = Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64authInfo)} -Method Get -Uri $urlDef
#Write-Host $definition
$definition.variables.$valueName.Value = "$winVersion"
$definitionJson = $definition | ConvertTo-Json -Depth 50 -Compress
#Write-Host (ConvertTo-Json $definition -Depth 100)
$update=Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64authInfo)} -Method Put -Uri $urlDef -Body $definitionJson -ContentType "application/json"
#Write-Host "$update"
#$buildresponse = Invoke-RestMethod -Method Post -ContentType application/json -Uri $Uri -Headers @{Authorization=("Basic {0}" -f $base64authinfo)} -Body $body
#write-Host $buildresponse.status
J'ai trouvé ce lien utile: https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=AZURE-DEVOPS&tabs=powershell
Cela dispose des options complètes de ce que vous pouvez faire: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=AZURE-DEVOPS&TABS=YAML%2CBatch Englisons
Vous pouvez réutiliser une variable définie de la tâche à la tâche, ainsi que du travail au travail. Je n'ai rien trouvé sur scène à la scène.
En résumé:
jobs:
# Set an output variable from job A
- job: A
pool:
vmImage: 'vs2017-win2016'
steps:
- powershell: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the value"
name: setvarStep
- script: echo $(setvarStep.myOutputVar)
name: echovar
# Map the variable into job B
- job: B
dependsOn: A
pool:
vmImage: 'ubuntu-16.04'
variables:
myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutputVar'] ] # map in the variable
# remember, expressions require single quotes
steps:
- script: echo $(myVarFromJobA)
name: echovar