无法使用 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,出现同样的问题:
我在发布管道中使用 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,出现同样的问题: