我有一个代码,我在 Azure DevOps 中有一个构建管道。我还有一个 Linux WebApp,我在 site/wwwroot 目录中创建了一个名为 test 的文件夹。当我创建发布管道时,我希望它发布到测试文件夹而不是默认路径。这可能吗??
问问题
168 次
2 回答
1
您可以使用 Kudu REST API 来实现它。它允许您指定上传文件的位置,而不是仅限于默认位置。
首先,您应该在发布管道中添加一个 Powershell 任务,然后编写一些脚本来调用和运行 kudu api 来部署您的应用程序。下面是一个例子:
$WebApp = Get-AzWebApp -Name '<appname>' -ResourceGroupName '<resourcegroupname>'
[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)))
$param = @{
# zipdeploy api url
Uri = "https://<appname>.scm.azurewebsites.net/api/zip/site/wwwroot/test"
Headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
UserAgent = "powershell/1.0"
Method = "PUT"
# Deployment Artifact Path
InFile = "$(System.DefaultWorkingDirectory)\<artifacts_alias>\drop\<artifacts_name>.zip"
ContentType = "multipart/form-data"
}
# Invoke REST call
Invoke-RestMethod @param
更多关于kudu api的细节可以参考这篇文章
于 2019-12-27T07:19:46.897 回答
0
最简单的方法是使用FTP 上传任务将提取的文件直接上传到 site/wwwroot 下的子文件夹。
如果您在部署之前压缩了包,那么您需要先添加一个任务来提取文件。当然,您也可以先将压缩包上传到服务器,然后导航到该位置并手动将文件解压缩到特定文件夹(site/wwwroot/test
在您的场景中)。
参考使用 FTPS 使用 Azure DevOps 部署 WebApp 以获取更多信息。
于 2019-12-31T14:23:24.907 回答