Использование Build.ArtifactStagingDirectory и PublishPipelineArtifact в матричной сборке

Мой Azure Pipelines создает выходные пакеты NuGet в /home/vsts/work/1/Windows папка где Windows это имя матрицы (я запускаю секцию сборки моего конвейера в Windows, Mac и Linux, но хочу публиковать пакеты NuGet только из моей сборки Windows).

Документы говорят об использовании $(Build.ArtifactStagingDirectory)/*.nupkg путь к NuGetCommand@2, Однако это указывает на /home/vsts/work/1/a папка.

Это $(Build.ArtifactStagingDirectory) переменная неверна, потому что я использую матричную сборку? Это неправильно, потому что я использую PublishPipelineArtifact@0 задача опубликовать мои.nupkg's?

Вот ссылка на мой файл azure-pipelines.yml.

1 ответ

Решение

Потому что вы используете matrix Стратегия с PublishArtifacts у вас есть несколько артефактов, поэтому на втором этапе (этап развертывания) 3 артефакта загружаются не в папку a в agnet, но в корневую папку сборки:

home
|-- vsts
      |-- work
           |-- 1
              |-- 
                  a
                  b
                  s
                  Test Results
                  Mac
                  Ubuntu
                  Windows

Так что вам нужно использовать varaible $(Build.BuildDirectory) что его ценность home/vsts/work/1 а потом /Windows/.nupkg:

$(Build.BuildDirectory)/Windows/.npukg
Другие вопросы по тегам