我正在尝试使用 Microsoft 提供的文档为基于 NodeJS 的 Azure 应用服务(在 Windows 上运行)配置构建和发布管道。
不幸的是,虽然运行构建和发布管道时没有显示错误并且部署显示成功,但应用程序无法加载以下部署,应用程序服务编辑器中的 web.config 文件中显示以下错误:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name = "Site Unavailable" stopProcessing = "true">
<match url = ".*" />
<action type = "CustomResponse" statusCode = "503" subStatusCode = "0" statusReason = "Site Unavailable" statusDescription = "Could not download zip" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
应用服务编辑器中还存在一个名为“FAILED TO INITIALIZE RUN FROM PACKAGE.txt”的文件,其中错误“从包初始化运行失败。不支持的 Zip 格式或损坏的 zip 文件。”显示。
虽然错误表明用于部署的 zip 文件在某种程度上无效,但不清楚它到底出了什么问题,我怀疑只是 zip 中的对象太多或者太大(超过 130MB) 。但我不确定如果是这种情况将如何解决。
我提供了以下构建和发布管道所涉及的步骤:
建设管道:
发布管道:
任何有关如何解决此问题的想法将不胜感激。
我使用 Express Generator 创建了一个简单的 Node.js 应用程序,参考 在 Azure 中部署 Node.js Web 应用程序来测试该问题。
我创建了一个相同的构建管道来使用以下 YAML 文件构建和发布 zip 工件。
trigger:
- none
pool:
vmimage: windows-latest
steps:
- task: Npm@1
inputs:
command: 'install'
workingDir: '$(Build.SourcesDirectory)'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
然后,我使用 Azure 应用服务部署任务创建了一个发布管道,以部署构建中的工件。我选择部署方法
zip deploy
并在应用程序设置中设置 -SCM_DO_BUILD_DURING_DEPLOYMENT true
。 (此应用程序设置在部署时启用构建自动化,它会自动检测启动脚本并使用它生成 web.config
。)