我正在尝试将devlops管道发布到Azure应用服务。我已经设置了管道YAML文件,一切似乎都很成功,因为工件已经发布:
下面是YAML文件:
trigger:
- master
pool:
vmImage: ubuntu-latest
steps:
- task: NodeTool@0
inputs:
versionSpec: '18.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --configuration production
displayName: 'npm install and build'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: 'dist'
ArtifactName: 'drop'
publishLocation: 'Container'
- task: DownloadBuildArtifacts@0
inputs:
artifactName: 'drop'
downloadPath: '$(System.ArtifactsDirectory)'
然而,当我尝试部署一个版本时,我在第三步得到这个错误:错误:未找到具有指定模式的包:D:\a\r1\a***.zip
检查任务中提到的包是否作为构建或前一阶段中的工件发布并在当前作业中下载。
任何帮助将不胜感激!
更新下面请参阅发布工件定义和任务定义:
我是否应该更新软件包或文件夹字段?
1条答案
按热度按时间eqfvzcg81#
问题是,Release管道中的
Azure App Service deploy
任务期望找到一个zip
文件(它希望在“选择文件或文件夹”对话框中看到一个zip文件,而不是一堆内容)。(MS的
AspNetCore
任务自动执行压缩,但是您遇到了错误,因为您在node.js
世界中压缩构建输出不是一个正常的步骤)因此,最简单的修复方法应该是,在Build管道中的 * 发布任务之前 * 添加一个ArchiveFiles@2任务。之后,您的发布管道工件步骤应该“看到”一个zip文件,然后它就可以工作了。
注意,在我看来,Build管道中的最后一个
DownloadBuildArtifacts@0
任务看起来是多余的?只有Release管道需要再次下载工件以部署它。备选方案:查找“将node.js应用程序部署到Azure应用服务”的工作示例
Azure App Service的大多数MS示例都是针对Asp.NET的,其中发布步骤默认情况下创建一个zip文件。
我能找到的最好的例子是https://azuredevopslabs.com/labs/vsts/nodejs/,你可以看到他们的管道中有ArchiveFiles任务: