Compare commits

...

2 Commits

Author SHA1 Message Date
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 4 deletions
+10 -3
View File
@@ -1,6 +1,13 @@
name: Deploy to Production
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.
# Runner: uses ubuntu-latest label (consistently present on
@@ -203,9 +210,9 @@ jobs:
fi
}
check "/dashboard" "Dashboard" 200
check "/health" "Health API" 200
check "/api/swagger" "API Swagger" 200
check "/dashboard" "Dashboard" 200
check "/health" "Health API" 200
check "/swagger" "API Swagger" 200
echo ""
echo "Results: $PASS passed, $FAIL failed"
+1 -1
View File
@@ -1 +1 @@
0.2.11
0.2.12