Files
llm/scripts/deploy_onec_agent_test.ps1

72 lines
2.2 KiB
PowerShell

param(
[string]$DockerContext = "test-docker",
[string]$ComposePath = "core/deploy/docker/1c-agent/compose.yaml",
[string]$BaseUrl = "http://docker-test.cin.su:8090",
[string]$ServiceName = "onec-agent",
[switch]$WithTurnCheck,
[int]$HealthTimeoutSec = 60,
[int]$SmokeTimeoutSec = 5,
[switch]$NoBuild
)
$ErrorActionPreference = "Stop"
function Invoke-CheckedCommand {
param(
[string]$Label,
[string[]]$Command
)
Write-Host "[run] $Label"
$exe = $Command[0]
$args = $Command[1..($Command.Length - 1)]
Write-Host ("[cmd] {0} {1}" -f $exe, ($args -join " "))
& $exe @args
if ($LASTEXITCODE -ne 0) {
throw "$Label failed with code=$LASTEXITCODE"
}
}
try {
Write-Host "[1] Deploying service '$ServiceName' on context $DockerContext"
if ($NoBuild) {
Invoke-CheckedCommand -Label "docker compose up" -Command @(
"docker", "--context", $DockerContext, "compose", "-f", $ComposePath, "up", "-d", $ServiceName
)
} else {
Invoke-CheckedCommand -Label "docker compose up --build" -Command @(
"docker", "--context", $DockerContext, "compose", "-f", $ComposePath, "up", "-d", "--build", $ServiceName
)
}
Write-Host "[2] Waiting for health endpoint: $BaseUrl/v1/health"
$stopAt = (Get-Date).AddSeconds($HealthTimeoutSec)
do {
try {
$response = Invoke-RestMethod -Uri "$BaseUrl/v1/health" -Method Get -TimeoutSec 5
if ($response.status -eq "ok") {
Write-Host "[ok] service is healthy"
break
}
} catch {
Start-Sleep -Milliseconds 1200
}
} while ((Get-Date) -lt $stopAt)
if ((Get-Date) -ge $stopAt) {
throw "service did not become healthy within ${HealthTimeoutSec}s"
}
Write-Host "[3] Running smoke against $BaseUrl"
$smokeArgs = @("scripts/smoke_onec_agent_api.py", "--base-url", $BaseUrl, "--timeout", $SmokeTimeoutSec.ToString())
if ($WithTurnCheck) {
$smokeArgs += "--with-turn-check"
}
Invoke-CheckedCommand -Label "smoke_onec_agent_api.py" -Command (@("python") + $smokeArgs)
Write-Host "[done] onec-agent smoke passed"
exit 0
} catch {
Write-Error $_
exit 1
}