Как изменить переменную процесса с помощью Powershell в конвейере сборки Azure - PullRequest
1 голос
/ 04 ноября 2019

У меня есть шаг Тесты в моем конвейере. Я хочу, чтобы на этом шаге запускались все тесты по расписанию, но только тесты, на которые влияют, только ручные или стробированные. Для этого я связал значение 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_runOnlyImpactedTests и Env:Parameters_runOnlyImpactedTests, но все онидать тот же результат.

Мои два вопроса сейчас:

  1. Почему переменная не принимает значение
  2. Если она не может работать таким образом,Есть ли альтернативы в достижении моей цели?

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Работает ли это для вас?

${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} также должен быть доступен в других задачах конвейера.

0 голосов
/ 05 ноября 2019

При тестировании в соответствии с комментарием Файроза верно, что когда в сценарии используется "##vso[task.setvariable variable=Parameters.runOnlyImpactedTests]True", вывод значения этой переменной не изменится в той же задаче. Измененное значение будет нормально выводиться в следующей задаче.

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 "

enter image description hereenter image description here

...