Эхо в файле YAML Azure Pipelines печатает разные вещи - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть этот код в моем файле YAML для конвейера Azure:

steps:
- bash: |
    echo $(date +%Y)
    echo "##vso[task.setvariable variable=buildName]$(date +%Y)_$(date +%m)_$(Build.BuildNumber)_v3.7"
    echo $BUILDNAME

Первый echo правильно печатает 2020, но третий печатает $(date +%Y)_$(date +%m)_4728573844_v3.7. Как видите, здесь год и месяц не переводятся в значения. Почему?

1 Ответ

1 голос
/ 26 февраля 2020

Это ожидаемое действие, вызванное ограничением из variable.

Чтобы установить переменную из сценария, используйте команду ведения журнала task.setvariable. Это не обновляет переменные среды, но делает новую переменную доступной для последующих шагов в рамках одного и того же задания.

В двух словах: когда вы используете команду task.setvariable для добавления новой переменной в Bash задача, созданная вами переменная не будет доступна в текущей задаче Bash. Это доступно только в следующих шагах.

Итак, здесь, когда вы добавляете еще одну задачу Bash и echo эту переменную, которую вы создали buildName. Вы увидите, что он успешно создан:

steps:
- bash: |
    echo $(date +%Y)
    echo '##vso[task.setvariable variable=buildName]$(date +%Y)_$(date +%m)_$(Build.BuildNumber)_v3.7'

- bash: |
    echo $(buildName)

enter image description here

...