Je rencontre un problème (comportement indésirable) lors de l'exécution d'un pipeline de build Azure avec la structure de projet/dossier suivante.
Le dossier racine de mon référentiel a deux dossiers principaux:
J'essaie de créer deux pipelines Azure distincts, l'un pour le backend et l'autre pour le frontend, donc j'utilise le projects:
paramètre pour spécifier le chemin correct.
Les commandes build
et test
fonctionnent correctement et ne font que restaurer/construire/tester le dossier backend
, mais la commande publish
s'exécute pour les deux dossiers: backend & frontend.
Voici mon fichier 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
J'ai essayé différents chemins de dossier, mais il exécute toujours deux commandes de publication.
Si je cours localement dans CMD dotnet publish backend
(à partir du dossier racine du référentiel), cela fonctionne bien, mais apparemment, cela ne fonctionne pas avec le pipeline Azure.
Toutes les idées ou corrections grandement appréciées.
L'astuce consiste à utiliser les propriétés publishWebProjects/projects. Ce sont en fait mutuellement exclusifs. Si le publishWebProjects
est utilisé, la valeur de la propriété projects
est ignorée.
De la documentation :
Publier des projets Web *: si vrai, la tâche essaiera de trouver les projets Web dans le référentiel et exécutera la commande de publication sur eux. Les projets Web sont identifiés par la présence d'un fichier web.config ou d'un dossier wwwroot dans le répertoire.
Vous pouvez donc essayer le code suivant pour la publication:
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