Feat v0.7.5 e2e ci gate #59

Merged
xcaliber merged 11 commits from feat/v0.7.5-e2e-ci-gate into main 2026-04-02 17:02:36 +00:00
Showing only changes of commit d9fdf282a9 - Show all commits

View File

@@ -1,6 +1,6 @@
# .gitea/workflows/ci.yaml
# ============================================
# Armature - CI/CD Pipeline (v0.17.3)
# Armature - CI/CD Pipeline (v0.18.0)
# ============================================
# Single unified image (Go backend + nginx frontend).
# v0.1.0: Dropped FE/BE image split per ROADMAP design decision.
@@ -10,8 +10,9 @@
# 1a. Frontend tests — skipped if only BE/docs/packages changed
# 1b. Go unit tests — all non-DB packages + SQLite integration (race-enabled)
# 1c. Go test (PG) — PG store + handlers against Postgres (race-enabled)
# 1d. Test runners — disabled until v0.7.5 (Playwright headless fix)
# 2. Build + Deploy — skipped if docs-only change
# 1d. Test runners — re-enabled v0.7.5 (any code change triggers)
# 1e. E2E smoke — Playwright navigation smoke test against every surface
# 2. Build + Deploy — always runs (docs are served in-app)
#
# Test coverage mapping (no package tested by zero jobs):
# Unit packages (auto-discovered) → test-sqlite (race)
@@ -24,11 +25,11 @@
# Path gating rules:
# src/, src/editor/ → frontend tests
# server/, scripts/db-* → backend tests (PG + SQLite)
# packages/ → test-runners (surface/extension tests)
# packages/ → test-runners + e2e-smoke
# Dockerfile*, k8s/, .gitea/ → all tests (infra change)
# ci/ → infra (CI scripts)
# docs/, *.md → skip all tests + deploy
# VERSION, scripts/* → frontend + backend tests
# docs/, *.md → build-and-deploy only (docs served in-app)
# VERSION, scripts/* → build-and-deploy only (no tests)
# Tags (v*) → always full pipeline
#
# Deployment mapping (single domain, path-based):
@@ -156,7 +157,7 @@ jobs:
docs/*|*.md|CHANGELOG.md|LICENSE)
DOCS=true ;;
VERSION|scripts/*)
FE=true; BE=true ;;
DOCS=true ;; # deploy-only — scripts/db-* already matched as BE above
ci/*)
INFRA=true ;;
*)
@@ -416,15 +417,15 @@ jobs:
# Depends on all test jobs. Skipped jobs (due to path gating)
# are treated as successful — no blocking.
#
# Skipped entirely for docs-only changes (nothing to build).
# Always runs — docs are served in-app by the Docs surface.
build-and-deploy:
runs-on: ubuntu-latest
needs: [detect-changes, test-go-pg, test-frontend, test-sqlite, test-runners]
# Run unless: a needed job failed, the workflow was cancelled, or it's docs-only.
# Run unless: a needed job failed or the workflow was cancelled.
# Skipped test jobs (path-gated) are fine — they don't block.
# Always deploys — docs are served in-app, VERSION needs a build.
if: |
!cancelled() && !failure() &&
needs.detect-changes.outputs.docs_only != 'true'
!cancelled() && !failure()
steps:
- name: Checkout
uses: actions/checkout@v4