.net 由于ZIP的结构,使用kudu ZipDeploy的Azure webapp部署失败
我正在尝试将.NET Framework站点的部署过程更新为Azure WebApp。我们以前使用的是.net 由于ZIP的结构,使用kudu ZipDeploy的Azure webapp部署失败,.net,azure,deployment,msbuild,kudu,.net,Azure,Deployment,Msbuild,Kudu,我正在尝试将.NET Framework站点的部署过程更新为Azure WebApp。我们以前使用的是Publish-AzureWebsiteProjectPowerShell cmdlet,但现在正在逐步淘汰。因此,我们试图通过最近发布的Publish-AzWebAppPowerShell cmdlet使用kudu的zipdeploy功能。将文件放到Azure上,一切都很顺利,但在将ZIP解压缩到正确位置时却失败了 当我在构建服务器上使用“Package”目标构建站点时,它会生成一个用于MSD
Publish-AzureWebsiteProject
PowerShell cmdlet,但现在正在逐步淘汰。因此,我们试图通过最近发布的Publish-AzWebApp
PowerShell cmdlet使用kudu的zipdeploy功能。将文件放到Azure上,一切都很顺利,但在将ZIP解压缩到正确位置时却失败了
当我在构建服务器上使用“Package”目标构建站点时,它会生成一个用于MSDeploy的ZIP结构。这不是zipdeploy方法所期望的格式。MSDeploy ZIP文件包含部署XML,实际内容深入嵌套到表示原始位置的路径中。Zipdeploy似乎需要一个简单的网站内容根目录存档,因此它在提取后将文件从存档复制到文本路径中
因此,例如,如果我的Visual Studio解决方案位于d:\builds\solution
中,则用于打包的生成文件位于d:\builds\solution\project\obj\debug\Package\PackageTemp
中。该站点的内容进入以下路径下的ZIP文件D\u C\builds\solution\project\obj\debug\Package\PackageTemp\content
。因此,当zipdeploy运行时,它会将内容放入webapp中,网址为wwwroot/content/D_C/builds/solution/project/obj/debug/Package/PackageTemp/content/
我正在运行的用于生成项目的命令是:
msbuild.exe /nologo /v:minimal /T:Package /p:Configuration="Debug;VisualStudioVersion=12.0" project.csproj
我希望有人知道我如何通过以下(优先顺序)之一实现这一点:
- 一个msbuild参数,用于生成站点并创建简单的内容ZIP
- 一个kudu设置,它将使用msdeploy而不是直接拷贝来部署当前ZIP
- 自定义kudu部署脚本,将通过msdeploy而不是文件副本进行部署
- 将创建兼容ZIP的msbuild目标自定义项
MSBuild.exe/p:configuration=“release”;平台=“任何cpu”;WebPublishMethod=包;PackageFileName=“\MyFolder\package.zip”;DesktopBuildPackageLocation=“\MyFolder\package.zip”;PackageAsSingleFile=true;PackageLocation=“\MyFolder\package.zip”;DeployOnBuild=true;DeployTarget=Package我意识到这是一篇老文章,但我在使用Powershell来ZipDeployAzure函数时也遇到了这个问题。 在我的例子中,现有的Azure函数已被删除,但新函数未被创建。 我使用压缩存档创建部署包。如果我用7Zip创建包,它就工作得很好。 那是在Powershell v5.1.18362.752上 在Powershell 7.0.3上运行相同的代码效果良好。我还没有试过PowerSHell 6。 以下是代码片段:
$files = Get-ChildItem -Path $path -Exclude $exclude
# check the powershell version because v5.1 has a Compress-Archive that won't deploy to Azure
if($PSVersionTable.PSVersion.Major -lt 7){
Write-Host -ForegroundColor Red "Incompatible PowerShell version."
return
}
# compress
Compress-Archive -Path $files -DestinationPath $publish_archive -CompressionLevel Optimal
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", ("Basic {0}" -f $base64AuthInfo))
$headers.Add("Content-Type", "application/zip")
$ret = Invoke-RestMethod -Method Post -Headers $headers -Uri $url -InFile $publish_archive
$publish\u archive是zip文件的完整路径(不是相对路径)谢谢您的反馈。我已经通读了这个URL,它很有帮助,但没有解决我的特殊问题。不幸的是,事实上,我遇到了此部署方法的ZIP结构问题。您能告诉我您的CI CD管道工具是什么吗?Jenkins 1.5,我们正在使用MSBuild任务和powershell脚本部署包。使用MSBuild任务不要压缩文件,而是使用另一个步骤使用“压缩存档“。请按照。注意:软件包的大小有限制是的,这是我希望使用的一种方法。我遇到的一个问题是,使用上述构建配置生成的工件不会自动应用.config转换。所以我想我需要做的是1)建造;2) 应用转换和/或“部署到目录”;3) 压缩输出;4) 部署到AzureOld,但仍然相关。我们大部分已经切换到Azure DevOps,但仍有一些作业在Jenkins实例上运行。我一定会试试的。