Mettre à jour la valeur de la variable de version Azure dans PowerShell

Nov 19 2020

J'ai la variable de version $ (ecomm) = Oui, dans Azure Release Pipeline

Grâce à Powershell, je souhaite mettre à jour la valeur de $ (ecomm) = Non

Write-Host "Before update: "$(ecomm) Write-Host "##vso[task.setvariable variable=ecomm;]No" Write-Host "After update: "$(ecomm)

Mais la valeur ne se met pas à jour. Pouvez-vous s'il vous plaît m'aider à ce sujet. Merci d'avance.

Réponses

1 KevinLu-MSFT Nov 20 2020 at 02:01

Repcak a raison.

Lorsque vous utilisez la commande de journalisation pour définir des variables dans Powershell, vous pouvez uniquement modifier la valeur de la variable dans Pipeline Run au lieu de la définition de version.

Pour mettre à jour la définition de version dans la tâche Powershell, vous pouvez essayer les paramètres de pipeline suivants:

Ajoutez deux tâches Powershell.

La première tâche PowerShell exécute le script suivant:

Write-Host "##vso[task.setvariable variable=ecomm;]No"

Ce script est utilisé pour mettre à jour les valeurs des variables lors de l'exécution du pipeline.

La deuxième tâche Powershell exécute le script suivant:

$url = "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:SYSTEM_TEAMPROJECTID/_apis/Release/definitions/$($env:RELEASE_DEFINITIONID)?api-version=5.0-preview.3"
Write-Host "URL: $url" $pipeline = Invoke-RestMethod -Uri $url -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"


$pipeline.variables.ecomm.value = "$(ecomm)"


$json = @($pipeline) | ConvertTo-Json -Depth 99


$updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}

Remarque: vous devez également définir certaines options de publication :

  1. Sélectionnez l'option: Allow scripts to access the OAuth tokendansReleases -> Agent Job

  2. Accordez l' Edit release pipelineautorisation au rôle:Project Collection Build Service (OrgName)

Résultat:

Pour plus d'informations, vous pouvez vous référer à ce ticket .

Repcak Nov 19 2020 at 15:17

La façon dont vous le faites, il met à jour uniquement la variable pour l'exécution de pipeline donnée. Azure Pipelines importe ces variables à partir de l'interface que vous affichez, puis vous pouvez les remplacer (l'instance de la variable importée). Pour modifier la variable dans l'interface classique, vous devez effectuer un appel d'API à AzureDevops.