当使用下面的项目/文件夹结构运行Azure构建管道时,我遇到了一个问题(不想要的行为)。
我的存储库的根文件夹有两个主文件夹:
我试图构建两个独立的Azure管道,一个用于后端,一个用于前端,因此我使用projects:参数来指定正确的路径。
build和test命令运行良好,只恢复/构建/测试backend文件夹,但publish命令运行于两个文件夹:后端和前端。
这是我的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管道。
任何想法或解决办法都受到极大的赞赏。
发布于 2018-11-20 14:19:59
诀窍在于使用publishWebProjects/projects属性。这些实际上是相互排斥的。如果使用publishWebProjects,则跳过projects属性值。
来自文档
发布Web项目*:如果为真,任务将尝试在存储库中查找web项目,并在其上运行发布命令。通过目录中存在一个web.config文件或www.root文件夹来标识Web项目。
因此,您可以尝试以下发布代码:
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: truehttps://stackoverflow.com/questions/53342200
复制相似问题