#azure-devops-pipelines
#azure-devops-pipelines
Вопрос:
Пожалуйста, посмотрите код ниже. Не удается распечатать переменную сразу после задания set.variable! У меня были чувства, и я также пытался, чтобы НИЧЕГО ниже задачи set.variable вообще не выполнялось. Это так раздражает, и как я могу это решить?
- bash: |
echo "##vso[task.setvariable variable=BUILD_NUMBER]$(Build.BuildId)"
echo $(BUILD_NUMBER) // BUILD_NUMBER: command not found
displayName: Set
- bash: |
echo "you shall saw build id below"
echo $(BUILD_NUMBER) // Same line and this is OK!
displayName: Print
Ответ №1:
Честно говоря, для меня это имеет смысл. Вы ##vso[task.setvariable]
запускаете команду, и она делает переменную доступной для последующих задач, как только текущая задача будет завершена. Это не изменяет среду текущей задачи. Поскольку у вас явно уже есть данные, доступные в текущей задаче, это не должно иметь значения.
Вам даже не нужно делать то, что вы делаете: вы можете ссылаться на переменные как переменные среды, заменяя точки символами подчеркивания. Т.Е. $BUILD_BUILDID
. Обратитесь к документации.