当前位置: 首页 > 知识库问答 >
问题:

Azure Devops-Azure powershell任务查找发布/部署目录

田博易
2023-03-14

我正在运行Azure devops,其中我有一个管道和一个版本(在自托管代理上运行),该版本设置为发送到Azure应用程序服务。部署工作正常,唯一的问题是我还希望能够(基于我的一些发布变量)编辑web。已部署到azure网站后的站点配置。

我正在使用Azure Powershell任务(https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-powershell?view=azure-devops),我在发布变量中找不到任何地方(https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=azure-德沃斯

我正在寻找的这个帖子配置真的不可能吗,或者我应该用另一种方式来处理它吗?

共有1个答案

陈毅
2023-03-14

我认为您可以使用powershell任务调用Kudu api来获得部署的web。在您的发布管道中,使用Magic Chunks任务或文件转换任务对其进行配置和编辑。然后使用Kudu api上传更改后的web。再次配置azure网站。

1、下面的脚本显示了如何从Azure网站获得web.config。

$srcResGroupName = "Test"
$srcWebAppName = "tstest12"
$outwebconfig="$(System.DefaultWorkingDirectory)\tempfolder\web.config"

# Get publishing profile for SOURCE application
$srcWebApp = Get-AzWebApp -Name $srcWebAppName -ResourceGroupName $srcResGroupName
[xml]$publishingProfile = Get-AzWebAppPublishingProfile -WebApp $srcWebApp
# 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)))

$apiBaseUrl = "https://$($srcWebApp.Name).scm.azurewebsites.net/api/vfs/site/wwwroot/web.config"

# Download the web.config file to $outwebconfig

Invoke-RestMethod -Uri "$apiBaseUrl" `
                    -Headers @{UserAgent="powershell/1.0"; `
                     Authorization=("Basic {0}" -f $base64AuthInfo)} `
                    -Method GET `
                    -OutFile $outwebconfig

上面的脚本将在web上下载。从azure网站进行配置,并将其保存到$(System.DefaultWorkingDirectory)\tempfolder\web。配置,您可以稍后使用转换任务对其进行编辑。

以上脚本通过脚本获取用户名和密码,您也可以通过转到应用服务上的概述边栏选项卡,单击...在边栏选项卡顶部显示更多信息,然后单击获取发布配置文件

2,然后您可以添加配置转换任务来更改web。配置依据。

3、最后添加powershell任务以上载更改的web。配置到azure网站

$srcResGroupName = "Test"
$srcWebAppName = "tstest12"
$webconfig="$(System.DefaultWorkingDirectory)\tempfolder\web.config"

# Get publishing profile for SOURCE application
$srcWebApp = Get-AzWebApp -Name $srcWebAppName -ResourceGroupName $srcResGroupName
[xml]$publishingProfile = Get-AzWebAppPublishingProfile -WebApp $srcWebApp
# 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)))

 $apiUrl = "https://$($srcWebApp.Name).scm.azurewebsites.net/api/vfs/site/wwwroot/web.config";

Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $webconfig -ContentType "application/xml";

有关Kudu api的更多用法,请查看此处。

 类似资料:
  • 打包和部署, 我们必须要会. 我们要有追求,做一个会运维的编程好手. 做个DevOps. 就算公司有明确要求, 部署专门有运维人员,我们在他们做部署时,也要搬个板凳过去旁观,参与. 运维人员也特别乐于开发人员陪他们一起发布.

  • 我们将前面打包好的程序传到服务器其实就可以运行了,Blade的默认端口是 9000, 实际上大部分人都会使用 nginx 代理本地的网站,而不是直接将web服务端口修改为 80。 安装nginx的笔记我在这里写过,你可以参考一下。 启动项目 java -jar xxx.jar 后台运行 后台运行的方式蛮多的,比如使用 screen 这样的软件开启一个会话,也可以使用 nohup 命令 nohup

  • 我正在尝试使用Gradle的Maven Publish插件上传到Maven Central。我已经完成了用Sonatype创建项目的步骤,并获得了批准。我遵循了Gradle的教程。之后,当我在GitHub上运行我的持续集成操作时,我得到了以下错误。 完全错误:https://github.com/Driftverse/display-api/runs/5444179201?check_suite_

  • 但是当我对新版本进行排队时,发布任务抱怨“错误:找不到具有指定模式的包:D:\a\r1\a***.zip”。我认为这是因为发布定义中的zip文件路径是错误的。如何使构建任务和发布任务一起玩?

  • Blade本身没有特殊的打包服务,但是因为项目是Maven结构所以结合maven中的打包插件就可以完成了。 怎么做呢? 加入打包插件 <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId>

  • 链接 6.1 项目打包 6.2 部署到服务器