代码之家  ›  专栏  ›  技术社区  ›  BrianS

由于ZIP的结构,使用kudu-ZipDeploy的Azure webapp部署失败

  •  0
  • BrianS  · 技术社区  · 7 年前

    我正在尝试将.NET Framework网站的部署过程更新到Azure WebApp。我们以前使用的是 Publish-AzureWebsiteProject PowerShell cmdlet,但正在逐步淘汰。所以我们试图通过最近发布的 Publish-AzWebApp

    当我在构建服务器上使用“Package”目标构建站点时,它会生成一个ZIP结构,用于MSDeploy。这不是zipdeploy方法所期望的格式。MSDeploy ZIP文件包含部署XML,实际内容深入嵌套到表示原始位置的路径中。Zipdeploy似乎需要一个网站内容根的简单存档,因此它在提取后将文件从归档文件复制到文本路径中。

    例如,在我的解决方案中 d:\builds\solution d:\builds\solution\project\obj\debug\Package\PackageTemp D_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
    

    我希望有人知道我可以通过以下方式之一(优先顺序)实现这一目标:

    • 自定义kudu部署脚本,将通过msdeploy而不是文件副本进行部署
    • 将创建兼容ZIP的msbuild目标自定义项
    1 回复  |  直到 7 年前
        1
  •  1
  •   EnterpriseMike    6 年前

    我知道这是一个老帖子,但我也有一个问题,使用Powershell zipdeployazure函数。 我使用压缩归档来创建部署包。如果我用7Zip创建了这个包,那么它工作得很好。 在Powershell v5.1.18362.752上

    以下是代码片段:

    $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
    

        2
  •  -1
  •   Arunprasath    7 年前

    我知道你正在尝试CI-CD管道来在azurewebapps中部署web应用程序。

    下面的URL将帮助您部署Zip

    https://docs.microsoft.com/en-us/azure/app-service/deploy-zip

    压缩配置 MSBuild.exe/p: configuration=“release”;platform=“any cpu”;WebPublishMethod=Package;PackageFileName=“\MyFolder”\包.zip;DesktopBuildPackageLocation=“\MyFolder”\包.zip“PackageAsSingleFile=true;PackageLocation=”\MyFolder\包.zip“DeployOnBuild=true;DeployTarget=Package”

    推荐文章