Advance M7 workflows and release operations
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-15 17:43:53 -04:00
parent 17ab961485
commit 7c16b279ae
103 changed files with 8064 additions and 429 deletions

47
docs/web/CI.md Normal file
View File

@@ -0,0 +1,47 @@
# M6 CI contract
The repository remote is Gitea, so the authoritative workflow is
`.gitea/workflows/m6-ci.yml`. `main` is the protected release ref. Pull requests and ordinary
pushes run quick and Chromium lanes; the release lane runs only for a `main` push or an explicit
`workflow_dispatch`.
## Pinned runner matrix
| Component | Pinned value | Lane |
| --- | --- | --- |
| Runner | self-hosted Debian 13 x86_64, labels `blender-web` / `blender-web-release` | all |
| Node.js | 20.19.2 | all |
| npm | lockfile-compatible npm 9 | all |
| Playwright | 1.62.1 | Chromium, release |
| Chromium | Playwright Chromium 149.0.7827.55 or `CHROME_PATH` override | Chromium, release |
| Blender | official Blender 5.2.0 LTS with USD enabled, configured by `BLENDER_BIN` | release |
| Emscripten | 3.1.69 | release |
`BLENDER_ARCHIVE_SHA256` must identify the official Blender archive used by acceptance. VDB jobs
use `VDB_RESOURCE_ROOT`; when it is absent, tools resolve `resource-library/blender-web-vdb`
under the runner home directory.
## Lane contents
`npm --prefix web run ci:quick` installs from `package-lock.json`, then runs typecheck, lint, Node
tests, status consistency and release-evidence schema checks.
`npm --prefix web run ci:chromium` runs the P0 user loop (including main-thread and Offscreen
viewports), release browser smoke, network interruption, device loss, OOM, real OPFS quota,
malicious blend and archive gates. Every browser command receives a newly allocated loopback port;
Playwright owns and cleans its server process.
`npm --prefix web run ci:release` runs full E2E, the complete performance and VDB matrices, V1
acceptance, reproducible offline packaging, archive cold boot, and binary/source independent
verification.
Each lane writes `release/ci-reports/<lane>.json`, a sidecar SHA-256 and one immutable log per
command. Reports use `docs/status/ci-lane-report.schema.json` and bind the commit, lockfile, parity
ledger, engine manifest, SBOM, available archives and every command log. A failed subcommand writes
an atomic `FAILED` report before the lane exits nonzero; it cannot reuse an older READY report.
The npm cache key is derived from `web/package-lock.json`. The Emscripten cache additionally binds
version 3.1.69 and `tools/web/emscripten-env.sh`. Release evidence, reports and archives are never
cache inputs. Artifact retention is fixed at 7 days for quick, 14 days for Chromium and 30 days for
release; the report checker runs before upload.