簡體   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