这是一个没有错误生成的ASP.NET Core 3.0项目,但是当它触发管道发布到Azure App Service时,它失败并显示以下错误:
2019-11-10T23:09:23.8008460Z ## [错误]错误:找不到具有指定模式的软件包:D:\ a \ r1 \ a ***。zip
需要做什么来修复发布管道?管道版本正在将最新版本作为其工件。
在发布管道中,您已经在Artifacts
区域中指定了构建工件
将构建工件添加到发布管道时,您选择为其赋予别名Build Artifact
。这意味着(默认情况下)您的.zip
文件将位于$(system.DefaultWorkingDirectory)/Build Artifact/
启动发布时,会为每个发布管道在代理中创建一个新的唯一文件夹,并将工件下载到该文件夹中。 $(System.DefaultWorkingDirectory)变量映射到此文件夹。
为了确保每个工件下载的唯一性,将自动为链接到发布管道的每个工件源提供一个特定的下载位置,称为源别名。可以通过变量访问此位置:
$(System.DefaultWorkingDirectory)\[source alias]
此唯一性还确保,如果以后在其原始位置重命名链接的工件源(例如,在Azure Pipelines中重命名生成管道或在Jenkins中重命名项目),则无需编辑任务属性,因为代理中定义的下载位置不会更改。
默认情况下,源别名是链接工件资源时选择的源名称,并带有下划线。根据工件来源的类型,这将是构建管道,作业,项目或存储库的名称。您可以从发布管道的工件选项卡中编辑源别名。例如,当您更改构建管道的名称,并且想要使用可反映构建管道名称的源别名时。
(来自丰富的documentation
不要使用***.zip
(这不是正确的通配符语法)来搜索您的软件包,而应使用Build Artifact/**/*.zip
**
用于递归搜索目录
*
用于搜索路径的给定级别的一部分
SomeFile.*
)开头*File.zip
)结尾*meFi*
)以上信息假定您适当地来自构建管道publishing your build artifact,并且已在发布管道中添加了正确的构建工件。
,管道YAML缺少以下任务。不确定为什么ASP.NET Core模板中不包含此功能,这对于刚接触Azure DevOps的开发人员来说非常困惑。
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
- task: CopyFiles@2
inputs:
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
,
添加源类型为“构建”的工件时,将“默认版本”选择为“来自带有标签的构建管道默认分支的最新版本”,如下所示: