Remove SKIP_MOBILE — always build & gate mobile in CI#158
Conversation
PR #158 Review — Remove SKIP_MOBILE: always build & gate mobile in CISummaryThe mechanical changes are correct: every Seven findings, ranked by severity. Finding 1 — CONFIRMED / HIGH
|
| Candidate | Verdict | Reason |
|---|---|---|
rm('./www/') race between 4 parallel mobile builds |
Refuted | vendor/framework7-react/src/static/ does not exist on disk or in git; CopyWebpackPlugin patterns use noErrorOnMissing: true; nothing is written to www/, making the race inert |
NODE_ENV=production in CHILD_ENV causes npm to skip devDeps |
Refuted for CI | npm 10 (bundled with Node.js 20) honours --production=false over NODE_ENV. Risk exists only on npm ≤6 (local dev on old runtimes) |
Math.max(...[]) → RangeError on empty all[] |
Refuted (unreachable) | Every phase either exits the process on failure or returns a non-empty array; all can never be empty in the current code paths |
Phase 1 mobile installs/builds, Phase 2 deploy-mobile, and the verify-deploy mobile assertions all ran unconditionally already in CI once #156 landed — this just deletes the dead SKIP_MOBILE branches so there's no escape hatch left to flip back on. Refs #157 Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
Refs #157 Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
In the pipeline all four mobile editors always build, so a missing mobile/index.html means a failed or SIGTERM-killed build — not a legitimate skip. Soft-skipping let Phases 3-5 run against a partial BUILD_ROOT before verify-deploy caught it two phases later. Exit non-zero at deploy time instead. Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
framework7.css / framework7-rtl.css are CopyWebpackPlugin static copies
loaded via a JS load_stylesheet() call, not a <link href> — so the
existing href scan never sees them and checkDir('css') passes on any
CSS file. A broken CopyWebpackPlugin source path would ship an unstyled
mobile editor with a green gate. Assert both explicitly.
Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
Dropping SKIP_MOBILE means every CI run now does the framework7-react install (npm-shrinkwrap, ~1.1k packages) on Phase 1's critical path. Cache ~/.npm keyed on both lockfiles so it isn't re-downloaded cold each run. Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
CHILD_ENV spreads ...process.env, so WATCH=1 in the calling shell/CI leaked into all four mobile webpack children (webpack.config.js: watch === WATCH==='1'). phase() is a plain Promise.all with no timeout, so a watching child never resolves and hangs the build until CI's job ceiling kills it. Force WATCH: '0' for every child. Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
The mobile:install task is awaited before Phase 1 and its {label,ms,code}
result was dropped — invisible in the per-task timing table despite now
sitting on the critical path. Spread it into the summary array.
Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
f89c006 to
faf8fdc
Compare
Closes #157.
Removes the
SKIP_MOBILEescape hatch so CI can no longer skip building and gating mobile — the blind spot that let Euro-Office/DocumentServer#258 ship a broken mobile editor with green CI. Mobile now always builds andverify-deploy.mjsalways asserts its artifacts.Changes (web-apps)
.github/workflows/e2e.yml— dropSKIP_MOBILE: '1'from the build step. This is the change that matters: it arms the mobile gate Mobile editors: fix not-loading + ES2022 target / i18next crash #156 added.build/scripts/build-pipeline.js— mobile install + the 4 editor builds + Phase 2deploy-mobileare now unconditional.build/scripts/verify-deploy.mjs— drop theif (!SKIP_MOBILE)wrapper; mobile artifacts always asserted.Readme.md/build/README.md/docs/webpack-migration.md— remove allSKIP_MOBILEdocumentation.No deprecation shim: the flag was one day old with only two internal call sites (this workflow + the DocumentServer Makefile), so there's no installed base to warn.
Relationship to #154
#154 Tier 1 (mobile manifest gate) already landed in #156, just gated behind
SKIP_MOBILE. This PR makes it unconditional and completes #154's entire web-apps footprint. #154 Tier 2 (real-browser mobile smoke) lives indocumentserver/e2e— a separate DocumentServer PR.Follow-up (not here — DocumentServer repo)
develop/setup/Makefilestill forwardsSKIP_MOBILE. It's now a silent no-op (harmless — mobile builds regardless), but dead cruft to remove.Verification
git grep SKIP_MOBILEacross web-apps → nothing.node --checkpasses on both edited scripts.SKIP_MOBILE=1). Watch the build step — if framework7-react has a CI-specific install/build quirk, it surfaces here for the first time.🤖 Generated with Claude Code