如何使用 Azure DevOps 发布管道对防火墙后面的本地 IIS 应用程序执行运行状况检查
How do I perform health-check for on premises IIS app behind firewall using Azure DevOps release pipeline
-
health-monitoring
-
continuous-deployment
-
azure-devops
-
azure-pipelines-release-pipeline
-
azure-devops-pipelines
我有什么?
我已经将我的 ASP.NET 核心应用部署到我的 IIS。 IIS 应用程序本身在 Internet 上是不可见的,因为它在防火墙后面。
问题
如何从 运行 所在的服务器 ping 我的应用程序(以便它执行到本地主机的 HTTP GET)并向 Azure DevOps 报告?理想情况下使用现有任务
我可能会写一些 PowerShell,但我真的很想使用现有的解决方案
不过,目前恐怕还没有内置任务可以完美解决您的问题。
有一个 Invoke REST API task 可以调用 HTTP API 并解析响应。但是这个任务只能在一个agentlees job中使用,换句话说,除非你设置你的防火墙允许从Azure DevOps访问,否则你不能使用这个任务。
更新:使用 PowerShell 任务
先决条件:您需要使用 self-hosted agent 才能在防火墙内访问您的应用程序。
以下使用 YAML 管道进行演示。经典 UI 管道的步骤大致相同。
如果你只想获取响应体:
只需使用 Powershell 任务并发送您的 Web 请求:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
...
Invoke-RestMethod ...
如果要将响应体保存为变量:
第一步.设置一个变量:
variables:
result: null
步骤 2.使用 PowerShell 任务发送 HTTP 请求并更新变量:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
...
$response = Invoke-RestMethod ...
Write-Host "##vso[task.setvariable variable=result;]$response"
步骤3.那么$($env:RESULT)
的值就是你web请求的response body,你可以在后续任务中使用。
health-monitoring
continuous-deployment
azure-devops
azure-pipelines-release-pipeline
azure-devops-pipelines
我有什么?
我已经将我的 ASP.NET 核心应用部署到我的 IIS。 IIS 应用程序本身在 Internet 上是不可见的,因为它在防火墙后面。
问题
如何从 运行 所在的服务器 ping 我的应用程序(以便它执行到本地主机的 HTTP GET)并向 Azure DevOps 报告?理想情况下使用现有任务
我可能会写一些 PowerShell,但我真的很想使用现有的解决方案
不过,目前恐怕还没有内置任务可以完美解决您的问题。
有一个 Invoke REST API task 可以调用 HTTP API 并解析响应。但是这个任务只能在一个agentlees job中使用,换句话说,除非你设置你的防火墙允许从Azure DevOps访问,否则你不能使用这个任务。
更新:使用 PowerShell 任务
先决条件:您需要使用 self-hosted agent 才能在防火墙内访问您的应用程序。
以下使用 YAML 管道进行演示。经典 UI 管道的步骤大致相同。
如果你只想获取响应体:
只需使用 Powershell 任务并发送您的 Web 请求:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
...
Invoke-RestMethod ...
如果要将响应体保存为变量:
第一步.设置一个变量:
variables:
result: null
步骤 2.使用 PowerShell 任务发送 HTTP 请求并更新变量:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
...
$response = Invoke-RestMethod ...
Write-Host "##vso[task.setvariable variable=result;]$response"
步骤3.那么$($env:RESULT)
的值就是你web请求的response body,你可以在后续任务中使用。