Azure发布流水线报错:未找到匹配<file>的清单文件如何解决?
报错根因分析
- 构建阶段未正确打包K8s部署清单(Manifest)文件到发布制品:你当前构建流水线的
PublishPipelineArtifact@1任务填写的发布路径是$(Agent.ReleaseDirectory),该路径在构建阶段默认无业务文件,且你已注释CopyFiles@2任务,没有把代码库中存放的deployment、service等K8s配置文件复制到待发布目录。 - 发布流水线部署任务的Manifest路径配置错误:部署AKS的Kubernetes任务中填写的Manifest搜索路径与制品解压后的实际文件路径不匹配,无法匹配到对应配置文件。
- 小概率场景:构建阶段未完整拉取代码库,导致Manifest文件未下载到构建代理节点。
修复方案
1. 调整构建流水线配置,正确打包制品
取消CopyFiles@2任务的注释,调整文件匹配规则和发布路径,示例配置如下:
- task: CopyFiles@2 inputs: SourceFolder: '$(Build.SourcesDirectory)' # 构建代理拉取代码的根目录,无需修改 Contents: | **/manifests/*.yaml # 按你代码库中Manifest文件的实际存放路径调整,如直接放在根目录则写*.yaml TargetFolder: '$(Build.ArtifactStagingDirectory)' condition: succeededOrFailed() - task: PublishPipelineArtifact@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' # 替换原有的$(Agent.ReleaseDirectory) ArtifactName: 'drop' publishLocation: 'Container'
修改后重新运行构建流水线,确认制品drop中已经包含所有需要的K8s配置文件。
2. 校准发布流水线部署任务的路径配置
在AKS部署的Kubernetes任务中,Manifest路径填写要匹配制品解压后的实际路径,示例如下:$(System.DefaultWorkingDirectory)/drop/manifests/*.yaml
注意路径的大小写、层级要和代码库中的配置完全一致
3. 路径校验(可选,排查用)
如果调整后仍报错,可在发布流水线的部署任务前新增一个命令行任务,执行以下命令打印当前工作目录的文件结构:
- Windows代理:
dir /s $(System.DefaultWorkingDirectory) - Linux代理:
ls -R $(System.DefaultWorkingDirectory)
运行发布流水线后查看该任务的日志,确认Manifest文件的实际存放路径,再修改部署任务的路径配置即可。
内容的提问来源于stack exchange,提问作者Doston
相关产品推荐
相关产品推荐

