Конвейер Azure DevOps не может расширять ни одну из переменных среды во время выполнения.

У меня проблема с новым конвейером, который я настраиваю для микросервиса в Azure DevOps, где конвейер не может ссылаться на переменные среды, предоставляемые средой сборки.

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

Эти переменные BUILD_DEFINITIONNAME = my-microservice-repo и BUILD_BUILDNUMBER = 20200519.2. По сути, я хочу объединить эти две переменные, чтобы создать другую переменную для имени моего контейнера докеров, чтобы у меня была переменная, равная $(BUILD_DEFINITIONNAME):$(BUILD_BUILDNUMBER), которая должна расшириться до my-microservice-repo:20200519.2. Мы будем называть эту переменную imageName. Я определил его в разделе переменных в моем скрипте .yml как

variables:
  - name: imageName
    value: $(BUILD_DEFINITIONNAME):$(BUILD_BUILDNUMBER)

Однако, если я попытаюсь использовать эту переменную на своих шагах Docker:

    - task: [email protected]
      inputs:
        dockerFile: Dockerfile
        azureSubscriptionEndpoint: 'endpoint'
        azureContainerRegistry: 'my container registry'
        imageName: $(imageName)
        action: 'Build an image'

    - task: [email protected]
      inputs:
        azureSubscriptionEndpoint: 'endpoint'
        azureContainerRegistry: 'my container registry'
        action: 'Push an image'
        imageName: $(imageName)

Затем, когда скрипт запускается, я получаю эту ошибку: ##[error]invalid argument "myazurecontainerregistry.azurecr.io/$(build_definitionname):$(build_buildnumber)" for "-t, --tag" flag: invalid reference format

Итак, очевидно, что он правильно объединяет строки, поскольку я получаю $(build_definitionname):$(build_buildnumber), однако они не расширяются, несмотря на то, что они оба существуют в печатных переменных, как я упоминал ранее.

Есть ли что-то особенное, что мне нужно сделать, чтобы разрешить использование переменных среды в моем скрипте? У нас есть другие сценарии конвейера, которые работают нормально, из которых я скопировал этот сценарий yml, но мой отказывается работать, и я не могу понять почему, как и мои коллеги.

См. также:  Хорошая идея - использовать два управления состоянием в одном проекте флаттера?

Любая помощь будет принята с благодарностью.

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Zulukas

    Догадаться. Я неправильно назвал переменные, которые хотел использовать.

    $(BUILD_BUILDNUMBER) должно было быть $(Build.BuildNumber).

    Большой! Спасибо, что поделились своим решением здесь, вы можете принять его как ответ, чтобы оно могло помочь другим членам сообщества, которые сталкиваются с такими же проблемами, и мы могли бы заархивировать эту ветку, спасибо. person Zulukas; 25.05.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: