Развертывание отдельных файлов содержимого Stati c в службе приложений Azure с помощью задачи FTP в конвейерах Azure - PullRequest
0 голосов
/ 29 мая 2020

Я только что обновил веб-сайт Classi c ASP до ASP. NET Core MVC Razor Page. У меня нет системы CMS, и все мои файлы содержимого stati c (. xml), PDF-файлы и изображения содержатся в моем проекте веб-сайта. Чтобы развернуть мои файлы содержимого stati c, я использую задачи FTP в конвейерах Azure, основанных на каталоге. Когда мои конвейеры выпуска запускаются, они удаляют все содержимое в указанном каталоге содержимого в моей службе приложений, а затем повторно копируют все содержимое, которое было в каталоге, связанном с развертыванием. С Classi c ASP я смог использовать веб-развертывание для публикации sh отдельных файлов на моих локальных серверах, однако веб-развертывание больше не является вариантом из-за проблем с безопасностью публикации из локальной среды в облако. . Я бы хотел развернуть отдельные файлы содержимого вместо всего каталога содержимого в моих конвейерах выпуска. Возможность развертывать дельты была бы дополнительным бонусом. Есть ли сценарий или другие доступные функции, которые позволили бы мне развернуть отдельные файлы содержимого stati c в моих службах приложений? Обратите внимание: я не могу редактировать файлы непосредственно в консоли Kudu из-за стандартов аудита.

1 Ответ

0 голосов
/ 01 июня 2020

Вы можете использовать Kudu api для развертывания отдельных файлов содержимого на сервере приложений azure.

Вы можете попробовать добавить задачу сценария для вызова kudu api в конвейер выпуска. Для приведенных ниже примеров сценариев в PowerShell:

# User name from WebDeploy Publish Profile. Use backtick while assigning variable content  
$userName = "{userName}"  
# Password from WebDeploy Publish Profile  
$password = "{Password}"  
# Encode username and password to base64 string  
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $userName, $password)))

#deploy the static files to azure app server.
$filePath = "$(system.defaultworkingdirectory)\content\staticfiles.html";
$apiUrl = "https://websitename.scm.azurewebsites.net/api/vfs/site/wwwroot/staticfiles.html";
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $filePath -ContentType "multipart/form-data";

Вы можете получить имя пользователя и пароль в профиле Publi sh. Вы можете загрузить профиль publi sh из веб-приложения Azure. И обратитесь к значениям userName и userPWD в разделе publishProfile.

Вы также можете получить имя пользователя и пароль с помощью скриптов в задаче Azure PowerShell . См. Пример ниже:

$ResGroupName = ""
$WebAppName = ""

# Get publishing profile for web application
$WebApp = Get-AzWebApp -Name $WebAppName -ResourceGroupName $ResGroupName
[xml]$publishingProfile = Get-AzWebAppPublishingProfile -WebApp $WebApp

# Create Base64 authorization header
$username = $publishingProfile.publishData.publishProfile[0].userName
$password = $publishingProfile.publishData.publishProfile[0].userPWD
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

#deploy the static files to azure app server.
$filePath = "$(system.defaultworkingdirectory)\content\staticfiles.html";
$apiUrl = "https://websitename.scm.azurewebsites.net/api/vfs/site/wwwroot/staticfiles.html";
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $filePath -ContentType "multipart/form-data";

См. здесь для получения дополнительной информации.

...