2015-11-12 2 views
0

Я пытаюсь создать новый шаг развертывания Octopus, который вызовет конечную точку http. я нашел следующий тип шага, который кажется многообещающим, но могу получить какую-либо документацию на него:Добавление шага развертывания для вызова конечной точки http в Octopus Deploy

«Http Json Value Check Получает JSON от HTTP конечной точки, выглядит вверх значение ключа и проверяет, что он соответствует предопределенное значение. Если значение соответствует, тогда существует сценарий с кодом успеха, если значение не соответствует, тогда существует сценарий с кодом ошибки. "

Я не уверен, что ввести для: «Json Key» и «ожидаемое значение»

Кто сделал это? есть пример или предложить другой метод для достижения того, что я пытаюсь?

+0

Куда вы получаете шаблон шага сборки? – Fenton

ответ

0

Вот сценарий PowerShell, который я использую для получения JSON от конечной точки и проверки действительного значения. Если бы я мог вспомнить, где я получил базу кода, прежде чем модифицировать ее немного, я бы отдал должное оригинальному автору. Он будет работать либо с строкой, либо с регулярным выражением.

#------------------------------------------------------------------------- 
# Warmup.ps1 
#------------------------------------------------------------------------- 
[int]$returnme = 0 
[int]$SleepTime = 5 
[string]$regex = '[>"]?[aA]vailable["<]?' 
[string]$strContains = $regex 
# [string]$strContains = "log in" 
[string]$hostName = hostname 
[string]$domainName = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .).DNSDomain 
[string]$warmMeUp = "http://$hostName.$domainName/endpoint" 
[string]$html = "Will Be Set Later" 

#------------------------------------------------------------------------- 
# Get-WebPage 
#------------------------------------------------------------------------- 
function Get-WebPage([string]$url) 
{ 
    try 
    { 
     $wc = new-object net.webclient; 
     $wc.credentials = [System.Net.CredentialCache]::DefaultCredentials; 
     [string]$pageContents = $wc.DownloadString($url); 
     $wc.Dispose(); 
    } 
    catch 
    { 
     Write-Host "First Try Failed. Second Try in $SleepTime Seconds." 
     try 
     { 
      Start-Sleep -s $SleepTime 
      $wc = new-object net.webclient; 
      $wc.credentials = [System.Net.CredentialCache]::DefaultCredentials; 
      $pageContents = $wc.DownloadString($url); 
      $wc.Dispose(); 
     } 
     catch 
     { 
      $pageContents = GetWebSiteStatusCode($url) 
     } 
    } 
    return $pageContents; 
} 

#------------------------------------------------------------------------- 
# GetWebSiteStatusCode 
#------------------------------------------------------------------------- 
function GetWebSiteStatusCode 
{ 
    param (
     [string] $testUri, 
     [int] $maximumRedirection = 5 
    ) 
    $request = $null 
    try { 
     $request = Invoke-WebRequest -Uri $testUri -MaximumRedirection $maximumRedirection -ErrorAction SilentlyContinue 
    } 
    catch [System.Net.WebException] { 
     $request = $_.ErrorDetails.Message 
    } 
    catch { 
     Write-Error $_.Exception 
     return $null 
    } 
    return $request 
} 

#------------------------------------------------------------------------- 
# Main Application Logic 
#------------------------------------------------------------------------- 
"Warming up '{0}'..." -F $warmMeUp; 
$html = Get-WebPage -url $warmMeUp; 

Write-Host "Looking for Pattern $strContains" 
if ($html.ToLower().Contains("unavailable") -or !($html -match $strContains)) 
{ 
    $returnme = -1 
    Write-Host "Warm Up Failed. html returned:`n" + $html 
} 

exit $returnme