Публикация в конвейере Azure: задача DotNetCoreCLI с определенной папкой или проектом - PullRequest
0 голосов
/ 16 ноября 2018

У меня проблема (нежелательное поведение) при запуске конвейера сборки Azure со следующей структурой проекта / папки.

В корневой папке моего репозитория есть две основные папки:

  • интерфейс (проект ASP.Net Core 2.x & Angular 7)
  • бэкэнд (ASP.Net Core 2.x)

Я пытаюсь построить два отдельных конвейера Azure, один для внутреннего интерфейса и один для внешнего интерфейса, поэтому я использую параметр projects:, чтобы указать правильный путь.

Команды build и test работают нормально и только восстанавливают / собирают / тестируют папку backend, но команда publish работает для обеих папок: backend & frontend.

Это мой файл yaml:

 #build backend project
 task: DotNetCoreCLI@2
   displayName: dotnet build --configuration $(buildConfiguration)
   name: BuildBackendProject
   inputs:
     command: build
     projects: '**/backend/**/*.csproj'
     arguments: '--configuration $(buildConfiguration)'

 ... #run some tests

 #publish backend project
 task: DotNetCoreCLI@2
   displayName: dotnet publish backend --configuration $(buildConfiguration)
   name: PublishBackendProject
   inputs:
     command: publish
     projects: '**/backend/**/*.csproj'
     publishWebProjects: True
     arguments: '--configuration $(BuildConfiguration) --output 
     $(Build.ArtifactStagingDirectory)/backend'
     zipAfterPublish: True

Я пробовал разные пути к папкам, но всегда выполняются две команды публикации.

Если я запускаю локально в CMD dotnet publish backend (из корневой папки репозитория), он работает нормально, но, видимо, не работает с конвейером Azure.

Любые идеи или исправления приветствуются.

1 Ответ

0 голосов
/ 20 ноября 2018

Хитрость заключается в использовании свойств publishWebProjects / projects.Это на самом деле взаимоисключающие.Если используется publishWebProjects, значение свойства projects пропускается.

Из документации :

Публикация веб-проектов *: если true,Задача попытается найти веб-проекты в репозитории и выполнить для них команду публикации.Веб-проекты определяются по наличию в каталоге файла web.config или папки wwwroot.

Таким образом, вы можете попробовать следующий код для публикации:

task: DotNetCoreCLI@2
  displayName: dotnet publish backend --configuration $(buildConfiguration)
  name: PublishBackendProject
  inputs:
    command: publish
    projects: '**/backend/**/*.csproj'
    publishWebProjects: false
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/backend'
    zipAfterPublish: true
...