Refre sh переменных среды в Azure Конвейер - PullRequest
2 голосов
/ 09 января 2020

Как мне переопределить sh переменные среды для последующих шагов в той же сборке, которая косвенно изменяет эти переменные?

Раздел тестового файла YAML, который воспроизводит описанное поведение.

jobs:
- job: welldone
  pool: 
    name: noodle
  steps:
  - script: |
      echo select TestStand 2016
      start /wait "" "C:\Program Files (x86)\National Instruments\Shared\TestStand Version Selector\TSVerSelect.exe" /version 16.0 /installing /noprompt
    displayName: 'select TestStand version 16'

  - script: |
      echo Check TestStand version
      echo %TestStand%
      call RefreshEnv.cmd
      echo %TestStand%
    displayName: 'print TestStand version'

  - script: |
      call checkTSversion.bat
      call RefreshEnv.cmd
      call checkTSversion.bat
    displayName: 'call bat file to print TestStand version'

Первые вызовы сценария Селектор версии TestStand , который изменяет переменные окружения среди прочего.

Второй сценарий печатает переменные среды, начинающиеся с "teststand", затем вызывает refreshenv.cmd и снова печатает переменные. Первая печатает старые переменные, вторая - обновляется. Полагаю, это согласуется с ожидаемым поведением cmd.

3-й скрипт делает то же самое, но теперь echo %TestStand% находится в отдельном пакетном файле. Он ведет себя точно так же, как второй сценарий.

Что я могу сделать в первом сценарии, чтобы убедиться, что последовательные сценарии будут читать обновленные переменные среды?

1 Ответ

0 голосов
/ 06 февраля 2020

Я не совсем уверен, что понимаю ваш пример конвейера, но мне кажется, что вы хотите установить переменные и / или изменить значения переменных на шаге задания, а затем использовать новое значение на следующем шаге задания. Правильный? Если это так, вы ищете что-то вроде этого:

steps:
# Create a variable
# Note that this does _not_ update the environment of the current script.
- bash: |
    echo "##vso[task.setvariable variable=sauce]crushed tomatoes"

# An environment variable called `SAUCE` has been added to all downstream steps
- bash: |
    echo "my environment variable is $SAUCE"
- pwsh: |
    Write-Host "my environment variable is $env:SAUCE"

Источник: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#set -variables-in-scripts

...