Используйте Powershell для публикации sh в виртуальном каталоге WebApp - PullRequest
0 голосов
/ 15 января 2020

У меня есть Azure WebApp, то есть , разделенное на две виртуальные директории - UI и API.

Мне удалось создать виртуальные каталоги в коде, но я не могу найти средство публикации на них.

Вот мой код:

# Set UI Virtaul Directory (call /ui )
$website = Get-AzWebApp -Name $appsvWebAppName -ResourceGroupName $resourceGroupName
 $VDApp = New-Object Microsoft.Azure.Management.WebSites.Models.VirtualApplication 
 $VDApp.VirtualPath = "/ui" 
 $VDApp.PhysicalPath = "site\wwwroot\ui" 
 $VDApp.PreloadEnabled ="YES" 
 $website.siteconfig.VirtualApplications.Add($VDApp) 
 $website | Set-AzWebApp -Verbose

# Set API Virtual Directory (call /api )
$website = Get-AzWebApp -Name $appsvWebAppName -ResourceGroupName $resourceGroupName
 $VDApp = New-Object Microsoft.Azure.Management.WebSites.Models.VirtualApplication 
 $VDApp.VirtualPath = "/api" 
 $VDApp.PhysicalPath = "site\wwwroot\api" 
 $VDApp.PreloadEnabled ="YES" 
 $website.siteconfig.VirtualApplications.Add($VDApp) 
 $website | Set-AzWebApp -Verbose

 $website.SiteConfig.VirtualApplications

# Dotnet publish & convert to zip here, removed for brevity ...

$uiZipPath = $zipFilesFolder + "\ui.zip"


 $publishprofile = Get-AzWebAppPublishingProfile -ResourceGroupName $resourceGroupName `
 -Name $appsvWebAppName `
 -OutputFile $publishProfileFileName


 Publish-AzWebApp -ArchivePath $uiZipPath `
 -ResourceGroupName $resourceGroupName `
 -Name $appsvWebAppName 

Я не вижу, как указать Publi sh -AzWebApp на виртуальный каталог.

Publi sh можно сделать вручную , но я действительно хочу автоматизировать его (используя Publi sh -AzWebApp или другое средство).

Как мне это сделать, пожалуйста?

1 Ответ

1 голос
/ 16 января 2020

Publish-AzWebApp не поддерживает это, вы можете использовать Kudu API в powershell для его автоматизации.

В моем примере он использует VFS сначала создайте каталог, затем загрузите zip-файл с помощью Zip.

$appsvWebAppName = "xxxxxxx"
$resourceGroupName = "xxxxxxx"

$resource = Invoke-AzResourceAction -ResourceGroupName $resourceGroupName -ResourceType Microsoft.Web/sites/config -ResourceName "$appsvWebAppName/publishingcredentials" -Action list -ApiVersion 2018-02-01 -Force

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

# Create the folder, not lose `/` after `ui`
$apiUrl = "https://$appsvWebAppName.scm.azurewebsites.net/api/vfs/site/wwwroot/ui/"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT

#Upload the zip file
$apiUrl = "https://$appsvWebAppName.scm.azurewebsites.net/api/zip/site/wwwroot/ui"
$filePath = "C:\Users\joyw\Desktop\testdep.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $filePath -ContentType "multipart/form-data"

Для site\wwwroot\api это тот же лог c, просто измените ui до api в сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...