Azure YAML流水线两阶段构建部署时提示找不到指定模式zip包错误
Azure流水线两阶段部署包找不到问题修复方案
问题根源
你遇到的No package found with specified pattern报错由两个配置错误共同导致:
- Azure Pipelines不同阶段的运行代理相互独立,前序构建阶段发布的构件不会自动同步到部署阶段,你没有在部署阶段添加构件下载步骤
- 打包任务的源目录配置错误,npm构建生成的产物默认存放在源码根目录的dist文件夹,你配置的
$(Build.BinariesDirectory)默认无内容,即使找到zip包也是无效空包
修正后的完整流水线配置
trigger: - master pool: vmImage: ubuntu-latest stages: - stage: BuildIt jobs: - job: BuildTheCode steps: - task: NodeTool@0 inputs: versionSpec: '10.x' displayName: 'Install Node.js' - script: | npm install npm run build displayName: 'npm install and build' - task: ArchiveFiles@2 inputs: # 修正源目录为npm build输出的dist文件夹 rootFolderOrFile: 'dist' includeRootFolder: true archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' replaceExistingArchive: true - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container' - stage: Deploy jobs: - job: PublishCode steps: # 新增下载前序阶段发布的构件步骤 - task: DownloadBuildArtifacts@0 inputs: buildType: 'current' downloadType: 'single' artifactName: 'drop' downloadPath: '$(System.ArtifactsDirectory)' - task: AzureRmWebAppDeployment inputs: ConnectionType: 'AzureRM' azureSubscription: 'xxxxxx' appType: 'webAppLinux' WebAppName: 'xxxxxx' # 修正包路径为下载构件的存放目录 packageForLinux: '$(System.ArtifactsDirectory)/drop/**/*.zip'
修改说明
- 构建阶段的ArchiveFiles任务将源目录从
$(Build.BinariesDirectory)改为dist,对应npm run build的默认输出目录,如果你项目的构建输出目录不是dist,改为你实际配置的路径即可 - 部署阶段新增DownloadBuildArtifacts任务,将前序阶段发布的drop构件下载到当前代理的
$(System.ArtifactsDirectory)目录 - 部署任务的包路径修改为构件下载后的实际存放路径,匹配zip包的实际位置
内容的提问来源于stack exchange,提问作者Sole
相关产品推荐
相关产品推荐

