Укажите временную переменную очереди конвейера со значением по умолчанию - PullRequest
2 голосов
/ 17 октября 2019

В конвейерах Azure вы можете устанавливать переменные конвейера во время очереди . Вы можете использовать такую ​​переменную так же, как переменные, определенные самим конвейером.

Пример:

# pipeline.yml
steps:
- checkout: none
- template: steps/some.yml
  parameters:
    name: $(queueTimeVar)

# steps/some.yml
parameters:
  name: 'World'

steps:
  - bash: |
      echo "Hello ${{ parameters.name }}!"

Но если переменная не установлена ​​явно, конвейер вычисляет это выражение для самой строки. Шаблон шага будет вызываться с помощью name: '$(queueTimeVar)' и печатать Hello $(queueTimeVar)!.

Как я могу установить значение по умолчанию, если переменная не установлена?


Я попытался добавитьзначение по умолчанию в качестве переменной, но оно не сработало, как ожидалось.

variables:
  queueTimeVar: MyDefault

Впоследствии переменная времени в очереди не имела никакого эффекта. Переменная всегда была значением YAML.

В качестве обходного пути мне пришлось добавить обработку по умолчанию для каждой задачи, которая использует значение.

# bash task
value="MyDefault"
if [ -n "$QUEUETIMEVAR" ]; then
  value="$QUEUETIMEVAR"
fi

1 Ответ

2 голосов
/ 18 октября 2019

Как я могу установить значение по умолчанию, если переменная не была установлена?

Если то, что вы имеете в виду, не устанавливает эту переменную queueTimeVar в любом месте, в том числе на вкладке Переменныена странице запуска или на вкладке Переменные на странице конфигурации YAML. К сожалению, нет, если переменная не задана явно, сервер не может знать, где следует получить значение.

До сих пор, если вы используете тип конфигурации конвейера YAML, сервер может распознавать только переменные. который определен в трех местах: (1) Блок переменных в скрипте YAML, (2) Панель переменных на странице конфигурации, (3) Вкладка переменных вНастройка триггеров.

enter image description here

Любые переменные, которые не определены в одном из этих трех местоположений, не распознаются сервером, даже просто создайте одну новую переменную врасположение ниже:

enter image description here

Одним словом, если вы просто создаете новую переменную во время очереди и не определили ее сначала в этих трех местах,сервер все еще не может распознать переменную и ее значение.

Итак, вы должны установить переменные в одном из мест, которые я упоминал ранее. Или трубопровод не получит его.

...