Azure Входные данные конвейерной задачи не принимают переменные - PullRequest
0 голосов
/ 07 мая 2020

В yaml-файлах конвейера azure переменная imgRepoName отсекается от gitRepoName. bash эхо для gitRepoName показано core/cqb-api; bash эхо для 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" в качестве входных данных для задачи docker, он работает нормально, в то время как использование переменной напрямую, как показано выше, не создаст никаких изображений в реестре контейнеров.

PS, я также пробовал repository: $(imgRepoName), он выдает следующую ошибку:

invalid argument "***/$(basenamecore/cqb-api):test2" for "-t, --tag" flag: invalid reference format

1 Ответ

1 голос
/ 07 мая 2020

Похоже, он выполняется во время выполнения. Таким образом, 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

У меня работает.

...