Commit Graph

15 Commits

Author SHA1 Message Date
11b8e31a29 ci: run unit tests only, disable verbose output and logging overhead
Some checks failed
CI / ruff (push) Successful in 12s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has started running
On 2-core ARM runner, 2893 tests with verbose output and live log
capture take 2.5h+. Major bottlenecks:
- Coverage: disabled (previous commit)
- Verbose output (-v): generates huge I/O over Docker bridge
- Live log capture: logs every HTTP request per test
- Integration tests: heavy DB fixture setup (~7s each)

Now: unit tests only (2484), quiet mode (-q), no log capture,
LOG_LEVEL=WARNING. Integration tests run locally via make test.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:11:02 +01:00
0ddef13124 ci: split unit and integration tests into separate steps
Some checks failed
CI / pytest (push) Waiting to run
CI / ruff (push) Successful in 12s
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / validate (push) Has been cancelled
2893 tests with DB fixture setup take 2.5h+ on 2-core ARM runner.
Split into unit tests (2484, fast) and integration tests (341, DB-heavy)
as separate steps for better visibility into what's slow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 21:10:50 +01:00
60bed05d3f ci: disable coverage in CI and increase timeout to 90min
Some checks failed
CI / ruff (push) Successful in 13s
CI / validate (push) Successful in 28s
CI / dependency-scanning (push) Successful in 34s
CI / pytest (push) Failing after 1h10m23s
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
Coverage instrumentation (--cov) in pyproject.toml addopts was adding
3-5x overhead on the 2-core ARM CI runner. Disable it in CI with
--no-cov and --override-ini to clear addopts. Add --durations=20 to
identify slowest tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 19:36:58 +01:00
366d4b9765 ci: add pytest job timeout and per-test timeout to prevent silent CI failures
Some checks failed
CI / ruff (push) Successful in 11s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
2026-03-15 22:09:12 +01:00
9a13aee8ed feat: add module-aware test impact analysis and fix CI test scope
Some checks failed
CI / ruff (push) Successful in 13s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
Add run_affected_tests.py script that uses module dependency graph to
run only tests for changed modules and their dependents. Fix CI and
Makefile to use pyproject.toml testpaths (was missing 9 of 18 modules).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:29:31 +01:00
1eef69f300 ci: add security/performance/audit validators to pre-commit and CI
Some checks failed
CI / ruff (push) Successful in 10s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has started running
- Add validate-security, validate-performance, validate-audit hooks
  to .pre-commit-config.yaml (previously only architecture was checked)
- Break single "Run all validators" CI step into 4 explicit steps
  (architecture, security, performance, audit) for clearer pipeline output
- Add noqa: SEC001 suppressions for test fixture hashed_password values

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 22:49:04 +01:00
b382090771 refactor: remove GitLab CI config and docs after full Gitea migration
Some checks failed
CI / ruff (push) Successful in 12s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
- Delete .gitlab-ci.yml (replaced by .gitea/workflows/ci.yml)
- Delete docs/deployment/gitlab.md (superseded by gitea.md)
- Update audit rules to reference .gitea/workflows/*.yml
- Update validate_audit.py to check Gitea CI paths
- Clean up GitLab references in gitea.md, mkdocs.yml, .dockerignore
- Mark IPv6 AAAA records as completed in hetzner docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:28:35 +01:00
488d5a6f0e fix(ci): resolve 3 Gitea Actions pipeline failures
Some checks failed
CI / validate (push) Failing after 19s
CI / deploy (push) Has been skipped
CI / ruff (push) Successful in 8s
CI / pytest (push) Successful in 34m16s
CI / dependency-scanning (push) Successful in 28s
CI / docs (push) Has been skipped
- Remove upload-artifact step (unsupported on Gitea GHES)
- Replace architecture+audit jobs with unified validate job running validate_all.py
- Update docs: DEPLOY_HOST must be 172.17.0.1 (Docker bridge), not 127.0.0.1
- Add ufw rule for Docker bridge network SSH access

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:39:50 +01:00
e9253fbd84 refactor: rename Wizamart to Orion across entire codebase
Replace all ~1,086 occurrences of Wizamart/wizamart/WIZAMART/WizaMart
with Orion/orion/ORION across 184 files. This includes database
identifiers, email addresses, domain references, R2 bucket names,
DNS prefixes, encryption salt, Celery app name, config defaults,
Docker configs, CI configs, documentation, seed data, and templates.

Renames homepage-wizamart.html template to homepage-orion.html.
Fixes duplicate file_pattern key in api.yaml architecture rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:46:56 +01:00
11f1909f68 feat(cd): add continuous deployment on push to master
Some checks failed
CI / ruff (push) Successful in 8s
CI / pytest (push) Successful in 36m19s
CI / architecture (push) Successful in 11s
CI / dependency-scanning (push) Successful in 27s
CI / audit (push) Successful in 9s
CI / docs (push) Failing after 59s
CI / deploy (push) Failing after 3s
Deploy job SSHes to production after ruff/pytest/architecture pass,
running scripts/deploy.sh (stash, pull, docker rebuild, migrate, health check).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 22:42:13 +01:00
874e254c11 fix(ci): use Docker service hostname for PostgreSQL in pytest job
Some checks failed
CI / pytest (push) Failing after 36m48s
CI / dependency-scanning (push) Successful in 27s
CI / audit (push) Successful in 9s
CI / ruff (push) Failing after 7s
CI / architecture (push) Failing after 10s
CI / docs (push) Has been skipped
act_runner executes jobs in Docker containers on the same network as
service containers. Use service name (postgres:5432) instead of
localhost with port mapping.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 09:49:33 +01:00
c58ceb9872 fix(ci): use port 5433 for test PostgreSQL to avoid conflict
Some checks failed
CI / ruff (push) Successful in 8s
CI / pytest (push) Failing after 27s
CI / architecture (push) Failing after 9s
CI / dependency-scanning (push) Successful in 27s
CI / audit (push) Successful in 8s
CI / docs (push) Has been skipped
Production PostgreSQL already uses port 5432 on the host. The CI
test database now maps to port 5433.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:38:24 +01:00
e3428cc4aa fix(ci): use uv pip install --system instead of uv sync
Some checks failed
CI / ruff (push) Failing after 14s
CI / pytest (push) Failing after 1s
CI / architecture (push) Successful in 10s
CI / dependency-scanning (push) Successful in 27s
CI / audit (push) Successful in 7s
CI / docs (push) Has been skipped
The act_runner containers don't support uv sync virtual environments
properly. Using --system installs directly into the system Python,
making all tools available on PATH.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 22:59:20 +01:00
7852d09dcc fix(ci): use uv run instead of .venv/bin paths in CI workflow
Some checks failed
CI / ruff (push) Failing after 8s
CI / pytest (push) Failing after 0s
CI / architecture (push) Failing after 8s
CI / dependency-scanning (push) Successful in 26s
CI / audit (push) Failing after 9s
CI / docs (push) Has been skipped
The Gitea Actions runner containers don't expose .venv/bin on the
expected path. Using uv run lets uv resolve the correct environment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 22:55:06 +01:00
0437af67ec feat(merchant): extract merchant portal as first-class frontend with auth, Tailwind fixes, and Gitea CI
Some checks failed
CI / ruff (push) Has been cancelled
CI / pytest (push) Has been cancelled
CI / architecture (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / audit (push) Has been cancelled
CI / docs (push) Has been cancelled
- Extract login/dashboard from billing module into core (matching admin pattern)
- Add merchant auth API with path-isolated cookies (path=/merchants)
- Add merchant base layout with sidebar/header partials and Alpine.js init
- Add frontend detection and login redirect for MERCHANT type
- Wire merchant token in shared api-client.js (get/clear)
- Migrate billing templates to merchant base with dark mode support
- Fix Tailwind: rename shop→storefront in sources and config
- DRY Makefile tailwind targets with TAILWIND_FRONTENDS loop
- Rebuild all Tailwind outputs (production minified)
- Add Gitea Actions CI workflow (ruff, pytest, architecture, docs)
- Add Gitea deployment documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 20:25:29 +01:00