无法使用 Kudu api 将 .zip 文件部署到 Azure 应用服务

Unable to deploy .zip file using Kudu api to the Azure App Service

我在发布管道中使用 PowerShell 内联任务将相应的 zip 文件部署到 Azure 应用服务,但由于以下错误我无法实现。如果我在这里缺少任何东西,你能告诉我吗?

我遇到错误
Invoke-RestMethod : Path 'D:\a\r1\a_CI-VI-Maven/DeployPackages/marnet.zip' 解析为一个目录。指定包含文件名的路径,然后重试该命令。

下面是我使用的脚本:

$username = "用户名"
$password = "pwd"

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password))) $userAgent = "powershell/1.0"

$apiUrl = "https://{appservice}.scm.azurewebsites.net/api/zip/site/wwwroot/webapps/"
$filePath = "$(System.DefaultWorkingDirectory)_CI-VI-Maven/DeployPackages/marnet.zip"

Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"

正在寻找here

$username = "`$website"
$password = "pwd"
# Note that the $username here should look like `SomeUserName`, and **not** `SomeSite\SomeUserName`
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"

# Example 1: call the zip controller API (which uses PUT)
$apiUrl = "https://{sitename}.scm.azurewebsites.net/api/zip/site/wwwroot/"
$filePath = "C:\Temp\books.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $filePath -ContentType "multipart/form-data"

# Example 2: call the zipdeploy API (which uses POST)
$apiUrl = "https://{sitename}.scm.azurewebsites.net/api/zipdeploy"
$filePath = "C:\Temp\books.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST -InFile $filePath -ContentType "multipart/form-data"

因此,如果您想使用 zip 控制器 API,请将您的动词更改为 POST 的 PUT insted。

检查您的文件夹结构,您似乎有一个名为 marnet.zip!

的文件夹

您的问题发生是因为 $filePath = "$(System.DefaultWorkingDirectory)_CI-VI-Maven/DeployPackages/marnet.zip" 是文件夹 marnet.zip 的路径而不是真正的 marnet.zip 文件。

我的可重现步骤:

1.Everything 当我的 s.zip 文件 直接位于构建工件文件夹下时效果很好。

2.Change 在构建管道中创建 s.zip 文件夹,并将 s.zip 文件移动到此文件夹。

3.Then,出现同样的问题: