Объедините несколько веб-проектов в один выходной пакет zip

Я использую Visual Studio Online и работаю над созданием системы непрерывной интеграции. Сценарий, который у меня есть, требует, чтобы несколько веб-проектов создавались для одного развертывания службы приложений Azure. Уловка заключается в том, что "из коробки" при создании новой сборки задача сборки Visual Studio создается для создания отдельного zip-файла для каждого проекта в решении, а затем задача развертывания службы приложений Azure выдает ошибку, сообщающую, что существует более одного файла, соответствующего шаблону, который является *.zip.

Я хотел бы собрать все эти проекты в одном месте, объединяя различные проекты, и тогда в Azure App Service Deploy есть только один zip-файл для отправки, который, как я знаю, вполне подойдет. Мои аргументы MSBuild для задачи сборки Visual Studio: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\", Я пытался удалить PackageAsSingleFile атрибут, но он все еще создал файлы zip.

Возможен ли сценарий, который я хочу сделать в VSO, возможно, с другим набором кодов команд?

1 ответ

Решение

Похоже, вам нужен сценарий PowerShell или несколько задач для манипулирования файлами и папками перед публикацией артефакта.

  1. Извлечь файлы $(build.artifactstagingdirectory)\*.zip в $(build.artifactstagingdirectory)\Merged
  2. Архивные файлы $(build.artifactstagingdirectory)\Merged в $(build.artifactstagingdirectory)\Merged.zip
  3. Удалить файлы, которые мы извлекли с помощью minimatch: !/**/*.zip
  4. Измените развертывание службы приложений Azure для поиска: $(System.DefaultWorkingDirectory)/**/Merged.zip

https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=vsts

Другие вопросы по тегам