Входные данные задачи конвейера Azure не принимают переменные
В yaml-файлах azure pipeline переменная imgRepoName
отрезается от gitRepoName
. Эхо дляgitRepoName
показано core/cqb-api
; bash echo дляimgRepoName
показано cqb-api
variables:
vmImageName: 'ubuntu-18.04'
gitRepoName: $(Build.Repository.Name)
imgRepoName: $(basename $(gitRepoName))
- job: build_push_image
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and Push image
inputs:
repository: imgRepoName
command: buildAndPush
containerRegistry: "coreContainerRegistry"
tags: test2
Вопросы:
Когда я написал repository: "cqb-api"
в качестве входных данных для задачи докера он работает нормально, в то время как использование переменной напрямую, как показано выше, не создает никаких образов в реестре контейнеров.
PS, я тоже пробовал repository: $(imgRepoName)
он выдает следующую ошибку
invalid argument "***/$(basenamecore/cqb-api):test2" for "-t, --tag" flag: invalid reference format
1 ответ
Решение
Похоже, что он выполняется во время выполнения. Такgitreponame
заменяется, но функция базового имени не распознается в этом контексте. Вы можете это проверить:
variables:
gitRepoName: $(Build.Repository.Name)
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$name = $(basename $(gitRepoName))
Write-Host "##vso[task.setvariable variable=imgRepoName]$name"
- task: Docker@2
displayName: Build and Push
inputs:
repository: $(imgRepoName)
command: build
Dockerfile: docker-multiple-apps/Dockerfile
tags: |
build-on-agent
Меня устраивает.