当前位置: 首页 > 知识库问答 >
问题:

Azure管道发布:具有特定文件夹或项目的任务DotNetCoreCLI

爱乐邦
2023-03-14

我在运行具有以下项目/文件夹结构的Azure构建管道时遇到问题(不需要的行为)。

我的存储库的根文件夹有两个主要文件夹:

  • 前端(ASP.Net Core 2.x

我正在尝试构建两个单独的Azure管道,一个用于后端,另一个用于前端,因此我使用projects:参数指定正确的路径。

buildtest命令运行正常,并且只恢复/构建/测试后端文件夹,但是发布命令正在为两个文件夹运行:后端

这是我的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

我尝试了不同的文件夹路径,但它总是运行两个发布命令。

如果我在本地运行CMDdotnet发布后端(从回购的根文件夹),它可以正常工作,但显然不适用于Azure管道。

非常感谢您的任何想法或解决方案。

共有1个答案

慕鸿波
2023-03-14

诀窍在于使用PublishWebProjects/project属性。这些实际上是相互排斥的。如果使用了PublishWebProjects,则会跳过project属性值。

从留档:

发布Web项目*:如果为true,则任务将尝试在存储库中查找Web项目并对其运行发布命令。Web项目通过目录中是否存在web.config文件或www root文件夹来标识。

因此,您可以尝试以下代码进行发布:

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
 类似资料:
  • 我想了解从发布管道中的Azure密钥库中读取机密的最佳实践是什么。这里推荐哪一种方法?为什么?

  • Azure应用服务部署成功完成,但文件未更新。 我正在使用管道步骤版本4。* WebApp.zip成功地从构建中检索,它包含文件,但是在一个奇怪的子文件夹结构中:(我的路径从平台开始)。 我已经尝试过使用WebApp发布步骤,但它说它与zip文件不兼容。 这是发布步骤的日志输出:

  • 看起来,PublishBuildArtifacts任务在发布环境中不可用。 https://docs.microsoft.com/de-de/azure/devops/pipelines/tasks/utility/publish-pipeline-artifact?view=azure-德沃斯 但是,当我们的客户从Azure存储库(通用软件包)中获取新的工件版本时,有机会通过发布管道发布这些工件

  • 最近刚刚构建了一个 Azure 管道,其中在一个阶段中,项目暂存目录中有不同的 zip 文件。我试图实现的是使用艺术任务将暂存文件夹中的所有zip文件发布到放置文件夹。 我在工件暂存目录中有两个存档的zip文件: $(Build.ArtifactStagingDirectory)/$(Build.BuildId). zip $(Build.ArtifactStagingDirectory)/cli

  • 我试图使用Azure发布管道在一个解决方案中发布多个项目 它们都连接到同一Azure订阅,但有些确实部署到给定的应用程序服务,而另一些则给出未经授权的错误。 我已经研究过了,我读到添加website_webdeploy_use_scm到应用程序服务应该有助于未经授权的错误,但这对我没有帮助。 我还能看什么?我通过Azure Devops连接,所以我只是从它自动从Azure收集的列表中选择订阅,因为

  • 我有一个azure构建管道和发布管道。我在发布构建工件中面临问题。在构建管道中,发布构建工件被正确地创建在默认的“drop”目录中。 当我在发布管道中下载该工件时,发布文件正在服务抛出错误的中下载 您没有查看此目录或页面的权限。 这意味着我的发布工件没有在“home/wwwroot”目录中下载。 构建管道 释放管道 我错过了什么?