web-dev-qa-db-fra.com

Comment définir la variable de pipeline Azure de PowerShell

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.

enter image description here

enter image description here

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
5
Abhinav Sharma

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
0
Ryan Harlich