CL-6440: longevity campaign harness (@corbits/longevity-sim) #825
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| concurrency: | |
| # PRs group by number so a newer push supersedes and cancels the stale | |
| # run. Pushes to main group by commit SHA, giving every commit its own | |
| # group: a constant branch-wide key would let a newer push evict the | |
| # queued run of a commit still waiting behind an in-flight one, and | |
| # that commit would never be validated. cancel-in-progress therefore | |
| # only governs PR supersession. | |
| group: ci-${{ github.event.pull_request.number || github.sha }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| checks: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - run: bun install --frozen-lockfile | |
| - run: bun run typecheck | |
| - run: bun run lint | |
| - run: bun run build | |
| - run: bun run test | |
| - name: Structural check self-tests | |
| run: bun test scripts/checks/test | |
| - run: bun run check:deletion | |
| - run: bun run check:killdates | |
| - run: bun run check:packages | |
| - run: bun run check:licenses | |
| - run: bun run check:no-product-tenancy | |
| - run: bun run check:browser-safe-subpaths | |
| - run: bun run check:web-utilities | |
| - run: bun run check:ui-vocabulary | |
| - run: bun run check:react-ui-drift | |
| - run: bun run check:react-ui-pin | |
| walking-skeleton: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| services: | |
| postgres: | |
| # pgvector-enabled Postgres 17, matching the local development | |
| # database (brew postgresql@17 + pgvector). | |
| image: pgvector/pgvector:pg17 | |
| env: | |
| POSTGRES_USER: postgres | |
| POSTGRES_PASSWORD: postgres | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd "pg_isready -U postgres -d postgres" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - run: bun install --frozen-lockfile | |
| # The committed template ships a placeholder secret and a | |
| # credential-less local DATABASE_URL; point the URL at the service | |
| # container's superuser and mint a real session secret in place. | |
| - name: Write env file | |
| run: | | |
| cp .env.example .env | |
| secret=$(openssl rand -hex 32) | |
| sed -i "s|^SESSION_SECRET=.*|SESSION_SECRET=${secret}|" .env | |
| sed -i "s|^DATABASE_URL=.*|DATABASE_URL=postgres://postgres:postgres@localhost:5432/workbench|" .env | |
| # The e2e suite skips itself when DATABASE_URL is absent, so a | |
| # wiring mistake here could otherwise drop the whole suite while | |
| # CI stays green. Fail loudly instead: the env file must exist | |
| # with a usable DATABASE_URL and SESSION_SECRET, Postgres must be | |
| # reachable, and git (the workflow-asset publication path) must be | |
| # present. E2E_REQUIRED=1 below turns any remaining skip into a | |
| # hard failure. | |
| - name: Assert the e2e test env is wired | |
| run: | | |
| test -f .env | |
| grep -q '^DATABASE_URL=postgres://postgres:postgres@localhost:5432/workbench$' .env | |
| grep -Eq '^SESSION_SECRET=.{32,}$' .env | |
| pg_isready -h localhost -p 5432 | |
| git --version | |
| - name: Run the walking skeleton | |
| run: bun run test:e2e | |
| env: | |
| E2E_REQUIRED: "1" | |
| - name: Run the two-org isolation suite | |
| run: bun test test/isolation | |
| # apps/hub's own DB-backed suites (e.g. the sign-up rate-limit | |
| # proof) never run under the plain `checks` job, which has no | |
| # Postgres. E2E_REQUIRED=1 turns a would-be skip here into a hard | |
| # failure, so a misconfigured invocation can't pass vacuously. | |
| - name: Run the hub's database-backed suites | |
| run: bun test apps/hub/test | |
| env: | |
| E2E_REQUIRED: "1" |