在运行具有以下项目/文件夹结构的Azure生成管道时,我遇到了问题(异常行为)。
我的存储库的根文件夹有两个主文件夹:
我正在尝试构建两个单独的Azure管道,一个用于后端,一个用于前端,因此我使用projects:
参数来指定正确的路径。
build
和test
命令运行正常,仅还原/构建/测试backend
文件夹,但两个文件夹均运行publish
命令:backend和前端。
这是我的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
中本地运行(来自repo的根文件夹),它可以正常工作,但显然不适用于Azure Pipeline。
任何想法或修正都非常感谢。
答案 0 :(得分:7)
诀窍在于使用publishWebProjects / projects属性。这些实际上是互斥的。如果使用publishWebProjects
,则会跳过projects
属性值。
发布Web项目*:如果为true,则该任务将尝试查找网络 存储库中的项目,然后在它们上运行publish命令。网页 通过存在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