From 446dfaa625638683a357edc32273ceca1f0735fd Mon Sep 17 00:00:00 2001 From: Sarthak Agrawal Date: Sun, 9 Aug 2026 12:36:51 +0530 Subject: [PATCH] ci: add Motion release gates --- .github/workflows/ci.yml | 29 +++++++++++++++++++++++++++++ PROJECT_STATUS.md | 4 ++++ README.md | 20 ++++++++++++++++++++ package.json | 5 ++++- 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e4da6c3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +permissions: + contents: read + +concurrency: + group: motion-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + check: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 10 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm check diff --git a/PROJECT_STATUS.md b/PROJECT_STATUS.md index 98addde..4cb362b 100644 --- a/PROJECT_STATUS.md +++ b/PROJECT_STATUS.md @@ -31,6 +31,10 @@ multiplayer are **v2**, already scaffolded and parked in-repo. relay and web-game surfaces. Thirty-nine applicable source and configuration files pass with zero diagnostics via explicit compatibility rules; iOS, built webgame bundles, public output, and runtime behavior remain unchanged. +- **2026-08-09** — Added repository-owned push/PR CI for the server/web + typecheck, web build, and static landing contract, plus an explicit manual + Cloudflare Pages release command for the live public landing. Hosted CI keeps + iOS signing and physical-camera verification out of scope. - **2026-07-31** — Extended the existing product-specific agent catalog with a full brief and changelog Markdown mirror while preserving the prototype and privacy boundaries; production deployment remains separate. diff --git a/README.md b/README.md index ddcbe17..8c1a26f 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,26 @@ app** (`ios/Resources/webgame`), so no dev server or Mac network is needed to pl `GameConfig.forceDevServer = true`, point the app's dev-server IP at your Mac, and refresh the bundle after changes with `./scripts/sync-webgame.sh`. +## Checks and public landing release + +Pushes and pull requests run the repository-owned web/server typecheck, web +build, and static landing contract. Physical-device and signing evidence stays +manual because hosted CI cannot exercise the camera path. + +```bash +pnpm check +``` + +The public landing is a separate static Cloudflare Pages surface. Release it +only from a clean, synchronized `main` after exact-main CI is green: + +```bash +pnpm deploy +``` + +The parked PartyKit relay keeps its separate `server` deploy command and is not +released by the landing command. + ## Status & the main risk MVP POC. See [`PROJECT_STATUS.md`](./PROJECT_STATUS.md) and diff --git a/package.json b/package.json index 0288f39..91c9a55 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,10 @@ "dev:web": "pnpm --filter motion-web run dev", "lint": "ultracite check .", "typecheck": "pnpm --filter motion-server run typecheck && pnpm --filter motion-web run typecheck", - "build": "pnpm --filter motion-web run build" + "build": "pnpm --filter motion-web run build", + "check:landing": "node scripts/check-landing.mjs", + "check": "pnpm lint && pnpm typecheck && pnpm build && pnpm check:landing", + "deploy": "npx wrangler pages deploy landing --project-name motion --branch main" }, "devDependencies": { "@biomejs/biome": "2.5.5",