首页 > 解决方案 > 如何在 Azure 构建管道中使用 Powershell 修改流程变量

问题描述

我的管道中有一个测试步骤。我希望该步骤在计划运行时运行所有测试,但仅影响手动或门控运行的测试。为此,我将runOnlyImpactedTests值链接到流程变量,并尝试使用 Powershell 修改其值。

我可以读取变量,但无法更改它。我有两个问题,但首先,这是 PS 脚本

Write-Host "a ${Env:Parameters_runOnlyImpactedTests} b"
Write-Host "##vso[task.setvariable variable=Parameters.runOnlyImpactedTests]True"
Write-Host "c ${Env:Parameters_runOnlyImpactedTests} d"

#Build Reasons:
#https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/ff736208(v=vs.120)

if($Env:BUILD_REASON -eq "Schedule"){
    Write-Host "Is Scheduled. Should run all tests"
    Write-Host "##vso[task.setvariable variable=Parameters.runOnlyImpactedTests]False"
}

#gci env:
#gci variable:

# Use the environment variables input below to pass secret variables to this script.

及其输出

2019-11-04T18:32:37.5783531Z Génération du script.
2019-11-04T18:32:37.6377454Z a False b
2019-11-04T18:32:37.6408504Z ##[command]"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'D:\BuildsVnexAgents\Agt1-3348\_work\_temp\2fca26a4-3bb5-4d51-9d90-a29aa4c755b5.ps1'"
2019-11-04T18:32:37.9377454Z c False d
2019-11-04T18:32:37.9846229Z 

我也尝试使用设置变量Parameters_runOnlyImpactedTestsEnv:Parameters_runOnlyImpactedTests但它们都给出相同的结果。

我现在的两个问题:

  1. 为什么变量不取值
  2. 如果它不能那样工作,是否有其他方法可以实现我的目标?

标签: azure-devopsazure-pipelines

解决方案


这对你有用吗?

${Env:Parameters_runOnlyImpactedTests} = $false
Write-Host "a ${Env:Parameters_runOnlyImpactedTests} b"
${Env:Parameters_runOnlyImpactedTests} = $true
Write-Host "c ${Env:Parameters_runOnlyImpactedTests} d"

输出:

2019-11-05T09:56:39.8505031Z a False b
2019-11-05T09:56:39.8513437Z c True d

${Env:Parameters_runOnlyImpactedTests}在其他管道任务中也应该可用。


推荐阅读