首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure构建管道中使用Powershell修改流程变量

如何在Azure构建管道中使用Powershell修改流程变量
EN

Stack Overflow用户
提问于 2019-11-04 18:56:27
回答 2查看 394关注 0票数 1

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

我能读懂这个变量,但我不能改变它。我有两个问题,但首先,这里是PS脚本

代码语言:javascript
复制
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://learn.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.

及其输出

代码语言:javascript
复制
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. 如果它不能这样工作,在实现我的目标时有其他选择吗?
EN

回答 2

Stack Overflow用户

发布于 2019-11-05 09:59:15

这对你有用吗?

代码语言:javascript
复制
${Env:Parameters_runOnlyImpactedTests} = $false
Write-Host "a ${Env:Parameters_runOnlyImpactedTests} b"
${Env:Parameters_runOnlyImpactedTests} = $true
Write-Host "c ${Env:Parameters_runOnlyImpactedTests} d"

输出:

代码语言:javascript
复制
2019-11-05T09:56:39.8505031Z a False b
2019-11-05T09:56:39.8513437Z c True d

${Env:Parameters_runOnlyImpactedTests}还应该在其他管道任务中保持平衡。

票数 1
EN

Stack Overflow用户

发布于 2019-11-05 11:09:03

根据Fairoz的注释进行测试,当在脚本中使用"##vso[task.setvariable variable=Parameters.runOnlyImpactedTests]True"时,这个变量的值的输出不会在相同的任务中发生变化。修改后的值将在后续任务中正常输出。

代码语言:javascript
复制
steps:  
    - powershell: 
        Write-Host " a $(Parameters_runOnlyImpactedTests) a "
        "##vso[task.setvariable variable=Parameters_runOnlyImpactedTests]True"
        Write-Host " b $(Parameters_runOnlyImpactedTests) b "
    - powershell: Write-Host "c $(Parameters_runOnlyImpactedTests) c "

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58699493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档