在DevAzure发布管道中将node.js应用部署到Azure AppService:[error]错误:未找到具有指定模式的包:D:\a\r1\a\**\*.zip< br/>

watbbzwu  于 2023-04-22  发布在  Node.js
关注(0)|答案(1)|浏览(134)

我正在尝试将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
检查任务中提到的包是否作为构建或前一阶段中的工件发布并在当前作业中下载。
任何帮助将不胜感激!
更新下面请参阅发布工件定义和任务定义:

我是否应该更新软件包或文件夹字段?

eqfvzcg8

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任务:

  • 注意,他们使用的是VSTS“一体化”管道,而不是DevAzure GUI鼓励的两个管道(构建+发布),因此您不能只是复制他们的管道,但您可以看到他们拥有您没有的东西:* 归档步骤。

相关问题