ci: consolidate web and android workflows into one pipeline

Both subprojects ship from the same commit, so ordinary CI is now a single
ci.yml; only the tag-driven release stands apart. The web app is built twice
per run — once per base path — and every consumer downloads the artifact
instead of rebuilding, replacing three redundant base-"" builds on main.

Nothing deploys unless the test job is green, and android-release runs the
suite before signing (ci.yml does not fire on tags, so it was the only gap).

Shared toolchain setup moves into composite actions, which puts the web build
and the APK on the same Node version for the first time. The Firebase PR path
was still on npm ci against a stale web/package-lock.json that could resolve a
different tree than pnpm-lock.yaml; drop the lockfile and the npm path with it.

Also: least-privilege permissions widened per job, persist-credentials off on
every checkout, concurrency groups that cancel superseded PRs but never a live
deploy, npm caching for android, and the Firebase action pinned by commit SHA
to match how the release actions were already pinned.
This commit is contained in:
tiennm99 authored and Tien Nguyen Minh committed 2026-08-09 15:21:23 +07:00
1 parent dfc9f67e0c
commit c6c839fd95
17 files changed
+321 -8681

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
name: Set up web toolchain
description: >
Installs pnpm and Node, then restores web/ dependencies from the lockfile.
Node stays in lockstep with .github/actions/setup-android so the SvelteKit
app is tested and bundled into the APK on the same runtime.
runs:
using: composite
steps:
# Must precede setup-node: `cache: pnpm` needs the pnpm binary to
# resolve the store path.
- uses: pnpm/action-setup@v6
with:
package_json_file: web/package.json
- uses: actions/setup-node@v7
with:
node-version: '24'
cache: pnpm
cache-dependency-path: web/pnpm-lock.yaml
- run: pnpm install --frozen-lockfile
shell: bash
working-directory: web