Add post-deploy health gate to staging (#5)
CI / backend (push) Successful in 1m0s
CI / frontend (push) Successful in 19s
Deploy Staging / deploy (push) Successful in 19s
Security / secrets (push) Successful in 4s
Security / dependencies (push) Successful in 1m1s
CI / backend (pull_request) Successful in 57s
CI / frontend (pull_request) Successful in 19s
Security / secrets (pull_request) Successful in 5s
Security / dependencies (pull_request) Successful in 1m1s

This commit was merged in pull request #5.
This commit is contained in:
2026-07-01 16:08:27 +02:00
parent 11e6768d17
commit 045be2bb81
+24 -2
View File
@@ -43,6 +43,28 @@ jobs:
up -d --build up -d --build
docker compose -p inboxintel-staging ps docker compose -p inboxintel-staging ps
- name: Staging endpoints - name: Verify staging health
shell: powershell shell: powershell
run: Write-Host "Staging up - Frontend http://localhost:18081 API http://localhost:18080/swagger" # 'up -d' returns as soon as containers START, so a container that crashes
# on boot (e.g. bad DB password) would still report success. Poll the actual
# endpoints and fail the job if either isn't serving, dumping api logs so the
# cause is visible in the run. ASCII only (Windows PowerShell reads .ps1 as ANSI).
run: |
$ok = $false
foreach ($i in 1..20) {
Start-Sleep -Seconds 3
try { Invoke-WebRequest "http://localhost:18081/" -UseBasicParsing -TimeoutSec 5 | Out-Null; $fe = 200 }
catch { $fe = 0 }
# A 401 from the api means it is serving (auth enforced); Invoke-WebRequest
# throws on non-2xx, so read the status code off the exception.
try { Invoke-WebRequest "http://localhost:18080/api/v1/auth/me" -UseBasicParsing -TimeoutSec 5 | Out-Null; $api = 200 }
catch { $api = $_.Exception.Response.StatusCode.value__; if (-not $api) { $api = 0 } }
Write-Host "attempt $i - frontend=$fe api=$api"
if ($fe -eq 200 -and $api -gt 0) { $ok = $true; break }
}
if (-not $ok) {
Write-Host "Staging health check FAILED. Last 40 api log lines:"
docker logs inboxintel-staging-api-1 --tail 40
exit 1
}
Write-Host "Staging healthy - Frontend http://localhost:18081 API http://localhost:18080"