Azure devops 如何使用Azure DevOps发布管道在Azure Web App中的wwwroot目录外部署文件
我在Azure中托管了一个web应用程序,一些文件位于wwwroot文件夹中。我在wwwroot之外还有其他人,实际上在同一级别的名为components的目录中 到目前为止,我一直在使用Kudu控制台手动更新文件,在组件中删除一个ZIP文件。我已经开始将我的流程转移到Azure管道;我成功地配置了一个构建管道,该管道自动生成并压缩文件/工件以放入组件 现在,我正在尝试配置发布管道,以便将文件从构建部署到组件。问题是,我无法找到一个任务,默认的或从市场上,允许我配置作为组件的目标路径;默认情况下,它们都是针对wwwroot部署的 有什么任务或脚本可以实现这一点吗Azure devops 如何使用Azure DevOps发布管道在Azure Web App中的wwwroot目录外部署文件,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,kudu,azure-webapps,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,Kudu,Azure Webapps,我在Azure中托管了一个web应用程序,一些文件位于wwwroot文件夹中。我在wwwroot之外还有其他人,实际上在同一级别的名为components的目录中 到目前为止,我一直在使用Kudu控制台手动更新文件,在组件中删除一个ZIP文件。我已经开始将我的流程转移到Azure管道;我成功地配置了一个构建管道,该管道自动生成并压缩文件/工件以放入组件 现在,我正在尝试配置发布管道,以便将文件从构建部署到组件。问题是,我无法找到一个任务,默认的或从市场上,允许我配置作为组件的目标路径;默认情况下
这是我第一次在Azure管道中面对CI/CD的设置,也许我忽略了一些东西。您可以使用调用Kudu api的脚本来实现这一点。您需要在发布管道中添加azure powershell任务并运行kudu api。下面的脚本就是一个例子 1、创建组件目录的脚本
值infle应该指向发布管道下载的工件文件的位置。通常它位于$System.DefaultWorkingDirectory\中。您可以使用调用Kudu api的脚本来实现这一点。您需要在发布管道中添加azure powershell任务并运行kudu api。下面的脚本就是一个例子 1、创建组件目录的脚本 值infle应该指向发布管道下载的工件文件的位置。通常它位于$System.DefaultWorkingDirectory\中
$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)))
$bodyToPOST = @{
command = "md components"
dir = "D:\home\site"
}
# Splat all parameters together in $param
$param = @{
# command REST API url
Uri = "https://<appname>.scm.azurewebsites.net/api/command"
Headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
UserAgent = "powershell/1.0"
Method = "POST"
Body = (ConvertTo-Json $bodyToPOST)
ContentType = "application/json"
}
# Invoke REST call
Invoke-RestMethod @param
$param = @{
# zipdeploy api url
Uri = "https://<appname>.scm.azurewebsites.net/api/zip/site/components"
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