0

我有一个代码,我在 Azure DevOps 中有一个构建管道。我还有一个 Linux WebApp,我在 site/wwwroot 目录中创建了一个名为 test 的文件夹。当我创建发布管道时,我希望它发布到测试文件夹而不是默认路径。这可能吗??

4

2 回答 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 回答