Невозможно распечатать переменную сразу после ее установки в конвейере Azure devops

#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 . Обратитесь к документации.