繁体   English   中英

如何正确使用 Jenkins PowerShell 步骤调用 ZC6E190B284633C48E39E55049DA3CCERequest8Z ZDB974238714CA8DE634A7CE1D083A1vokeF 使用 InMethodest-WebvokeF

[英]How To Correctly Use Jenkins PowerShell step to call Web API using Invoke-WebRequest or Invoke-RestMethod

我正在使用JenkinsPowerShell命令步骤中调用Web ZDB974238714CAA8DE634A7CE1D08服务我正在使用Invoke-WebRequest调用该服务。

此服务调用必须在 Jenkins 中,因为只有在其他 Jenkins 作业成功完成时我才需要这样做。

该服务可以运行几个小时。 如果我没有TimeoutSec参数,则该步骤会在 Web API 完成之前以超时完成。 如果我有一个较大的参数,比如36000,那么Web API 正常完成,但是这个步骤持续了10个小时。 其他参数与此问题无关。

我正在寻找一种在 Web API 完成后立即完成 Jenkins 步骤的好方法,而不是更早或更晚。

try
{ 
    $url = "https://ourserver.com/modules/OurService"
    $response = Invoke-WebRequest -Uri $url -UseDefaultCredentials -Method Get -TimeoutSec 36000 -UseBasicParsing  
}
catch 
{    
    $err=$_.Exception  
    Write-Host '-----------------------'
    Write-Host $err        
    Write-Host '-----------------------'  
    exit -1
}
exit 0

我尝试了不同的方法,我认为我更接近我现在想要的位置......

我决定用Invoke-RestMethod go

一个奇怪的问题仍然存在:当我的长时间运行的服务被调用并且该服务完成时,我陷入了困境,但异常没有任何内容。 根据我的服务日志,我知道服务已成功完成。 所以,在这一点上,我认为它是成功的。

try
{
  $url = "https://ourserver.com/modules/OurService"
  $response = Invoke-RestMethod -Uri $url -UseDefaultCredentials -Method Get -TimeoutSec 18000
  $response  
  Write-Host 'Exit with success'
  exit 0
}
catch
{
  if (($_.Exception) -and ($_.Exception.Response))
  {
    $respStream = $_.Exception.Response.GetResponseStream()
    $reader = New-Object System.IO.StreamReader($respStream)
    $reader.BaseStream.Position = 0
    $responseBody = $reader.ReadToEnd() | ConvertFrom-Json
    '------------------------------------------------------------------------------------------------------------------------' 
    'Error Message:'
    $responseBody.Message
    $_.Exception
    '------------------------------------------------------------------------------------------------------------------------'
    exit -1
  }
  else
  {
    '------------------------------------------------------------------------------------------------------------------------' 
    'Got to catch, but no exception (we should not have gotten to "catch" area, possible PowerShell bug)'  
    '------------------------------------------------------------------------------------------------------------------------'
    exit 0
  }
  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM