Compare commits

...

4 Commits

Author SHA1 Message Date
devops 87e504a1b5 chore: bump version to v0.2.13 [skip ci] 2026-06-09 19:25:23 +00:00
devops 802d2cef3f fix(ci): remove swagger from smoke test — disabled in production
CI - Build & Test / Backend (.NET) (push) Successful in 25s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 16s
CI - Build & Test / Security Check (push) Successful in 3s
Swagger (/swagger) is only enabled in Development mode (Program.cs
gates it behind app.Environment.IsDevelopment()). In production,
nginx serves the frontend catch-all (index.html), so the check
always returns 200 but never actually validates the API layer.

/health already covers API + database + runtime health checks.
No replacement endpoint needed — the smoke test still validates
both the dashboard and the backend API via /health.
2026-06-09 21:24:27 +02:00
devops 7bee8bc23f chore: bump version to v0.2.12 [skip ci] 2026-06-09 19:21:42 +00:00
devops 84bf9b7fba fix(ci): correct swagger path + add deploy concurrency guard
CI - Build & Test / Backend (.NET) (push) Successful in 24s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 16s
CI - Build & Test / Security Check (push) Successful in 3s
Iteration 2 fix: /api/swagger → /swagger (correct ASP.NET default).

Iteration 3 — Concurrency guard:
- concurrency group 'deploy-production': ensures only one deploy
  runs at a time (cancel-in-progress: false so queued deploys
  wait instead of being cancelled).
- Why: prevents race conditions when CI-triggered workflow_run
  and manual workflow_dispatch overlap. Without this, parallel
  deploys could corrupt docker compose state or conflict on
  shared resources (ports, volumes, version tags).
2026-06-09 21:20:54 +02:00
2 changed files with 11 additions and 5 deletions
+10 -4
View File
@@ -1,6 +1,13 @@
name: Deploy to Production name: Deploy to Production
run-name: 🚀 Deploy ${{ inputs.bump_version || 'patch' }} by @${{ gitea.actor }} run-name: 🚀 Deploy ${{ inputs.bump_version || 'patch' }} by @${{ gitea.actor }}
# ── Concurrency: one deploy at a time, cancel queued ones ──
# Why: prevents race conditions when CI triggers deploy while
# a manual deploy is still running. The latest deploy wins.
concurrency:
group: deploy-production
cancel-in-progress: false
# ─────────────────────────────────────────────────── # ───────────────────────────────────────────────────
# Trigger: automatic after CI success, or manual dispatch. # Trigger: automatic after CI success, or manual dispatch.
# Runner: uses ubuntu-latest label (consistently present on # Runner: uses ubuntu-latest label (consistently present on
@@ -182,7 +189,7 @@ jobs:
# ── Step 7: Smoke test (multi-endpoint) ─── # ── Step 7: Smoke test (multi-endpoint) ───
# Tests multiple endpoints to catch partial failures. # Tests multiple endpoints to catch partial failures.
# Why: a single /dashboard check can miss backend-only outages; # Why: a single /dashboard check can miss backend-only outages;
# testing /api/swagger confirms the API layer is healthy too. # /health tests the API + database + runtime status.
- name: Verify (smoke test) - name: Verify (smoke test)
run: | run: |
echo "🔍 Smoke test..." echo "🔍 Smoke test..."
@@ -203,9 +210,8 @@ jobs:
fi fi
} }
check "/dashboard" "Dashboard" 200 check "/dashboard" "Dashboard" 200
check "/health" "Health API" 200 check "/health" "Health API" 200
check "/api/swagger" "API Swagger" 200
echo "" echo ""
echo "Results: $PASS passed, $FAIL failed" echo "Results: $PASS passed, $FAIL failed"
+1 -1
View File
@@ -1 +1 @@
0.2.11 0.2.13