如何使用 Azure DevOps 发布管道对防火墙后面的本地 IIS 应用程序执行运行状况检查

问题描述

我有什么?

我已经将我的 ASP.NET Core 应用程序部署到我的 IIS。 IIS 应用程序本身在 Internet 上是不可见的,因为它位于防火墙后面。

问题

如何从运行我的应用程序的服务器 ping 我的应用程序(以便它执行到本地主机的 HTTP GET)并向 Azure DevOps 报告?理想情况下使用现有任务

我可能会写一些 PowerShell,但我真的很想使用现有的解决方

解决方法

不过,目前为止,恐怕还没有内置任务可以完美解决您的问题。

有一个 Invoke REST API task 可以调用 HTTP API 并解析响应。但此任务只能用于 agentlees 作业,换句话说,除非将防火墙设置为允许从 Azure DevOps 访问,否则无法使用此任务。

更新:使用 PowerShell 任务

先决条件:您需要使用 self-hosted agent 才能在防火墙内访问您的应用程序。

以下使用 YAML 管道进行演示。经典 UI 管道的步骤大致相同。

如果您只想获取响应正文:

只需使用 Powershell 任务并发送您的网络请求:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      ...
      Invoke-RestMethod ...

如果要将响应正文保存为变量:

步骤 1. 设置变量:

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) 的值就是您的网络请求的响应正文,您可以在后续任务中使用它。