Commit Graph
19 Commits
Author SHA1 Message Date
imccyu 1276a8e13a ci: split pull-request CI into Linux, Windows, and Python workflows (#6898)
* ci: run native Windows PR jobs in a separate workflow

GitHub re-runs failed jobs only after a whole run finishes, so slow Windows jobs blocked re-running failed Linux jobs. CI Windows now owns the native Windows jobs and the Windows x64 Python runtime target, with its own required 'windows checks passed' verdict.

Refs #6893

* ci: run Python PR jobs in a separate workflow

Python rarely fails while the Windows lanes run long, so the Python SDK suite and the Linux/Windows x64 runtime matrix move into CI Python. The three pull-request workflows can now be re-run without waiting for each other, and branch protection gains "python checks passed" beside the existing verdicts.

Refs #6893

* docs: record the three PR verdicts in the failover runbook

* test: pin the shared environment across the PR workflows

* test: read the python SDK lane from CI Python

* test(sdk): parse session JSONL frames in the keyless smoke

Node 24.19 returned only the first frame of a concatenated zstd log, so the single JSON.parse saw just the header; 24.22 returns every frame and the JSONL body broke the parse. Read frames explicitly and select the main session by its header so both versions agree.
2026-10-22 04:09:35 +00:00
imccyu f6b0c5af59 build: rename build:src and build:test to build:artifacts and build:check
build:artifacts produces every artifact, including the tsdown bundles,
the Desktop bundle, and Web, so naming it after sources undersold it;
build:check checks scripts, benchmarks, and website code besides tests.
The build.ts scopes, aggregate step ids, the Python builder flag
(--build-artifacts), workflows, callers, docs, and the build-split Agent
Note follow the new names. The note also records the naming
alternatives.

Refs #5852
2026-10-11 22:16:47 +08:00
imccyu 129c915498 build: split build:src and build:test, and schedule build in parallel
pnpm run build ran every step in one serial chain, including the two
noEmit aggregate programs (tests, scripts, benchmarks, website) that no
artifact step consumes, so the Host aggregate check alone delayed tsdown by
about 66 s.

- build:src (scripts/build.ts --scope src) builds every artifact in the
  existing order and writes the client build record; it replaces the
  removed --artifacts-only flag and the libraries CLI mode.
- build:test (--scope test) type-checks only the Host and Client aggregate
  programs with tsc -p, concurrently, without compiling references or
  checking prerequisites.
- build runs both as one dependency graph through run-gates' new
  runAggregate: each aggregate check starts once its face's packages are
  compiled, and Client compilation stays after the Host bundle that writes
  the Typert /remote declarations. DSH_GATE_CONCURRENCY=1 serializes it;
  DSH_GATE_FAIL_FAST=1 stops the remaining steps at the first failure.
  Passing steps print one PASS line (DSH_GATE_VERBOSE=1 shows their output).
- PR artifact builds (e2e, release, preview, Node 22 compatibility) and the
  Python builder (--build-src) use build:src; dev:web and dev:desktop use
  build:src. test:*, bench, typecheck and the required consumer/Windows
  lanes keep the complete build.
- lint, lint:fix, doc-typecheck and the Typert contracts gate prepare with
  host-libraries (Host package compilation + Host bundle) instead of
  build:lib:host; their own checks never read the aggregate root or the
  Desktop bundle.

Parallel and serial build produce byte-identical lib/, Web dist and client
build record; a test-only type error fails build and build:test while
build:src passes.

Refs #5852
2026-10-11 18:19:23 +08:00
Tianyi Cui cdbb78d39d fix(ci): use the compatible pnpm setup action on Intel macOS 2026-10-07 23:17:10 +08:00
Tianyi Cui 59bd530aaf chore(deps): update GitHub Actions to mature release tags 2026-10-07 22:28:27 +08:00
Tianyi Cui 536aaef0b3 fix(ci): preserve workflow concurrency and portable artifact checks 2026-10-05 12:53:52 +08:00
Tianyi Cui 853ad0bb9f perf(ci): remove repeated aggregate compilation and gate work 2026-10-05 12:07:57 +08:00
Tianyi Cui c1dee0e6f6 test(release): allow inputs on manual publishing workflows 2026-10-03 09:34:42 +08:00
Tianyi Cui 580bdc7258 refactor: remove redundant unknown casts 2026-09-19 20:13:58 +08:00
Tianyi Cui 3c4c6c3d7b fix(ci): cancel superseded PR and master validation 2026-09-09 18:20:01 +08:00
Tianyi Cui 153d54a2f2 ci: retain shared persistent npm cache 2026-09-07 18:14:33 +08:00
Tianyi Cui 4ee338532a ci: retain shared pnpm store across runner instances 2026-09-07 17:28:12 +08:00
Tianyi Cui 7ef325619f Merge branch 'master' into fix/pr-ci-reliability-20260906 2026-09-07 16:46:31 +08:00
Tianyi Cui c379894af8 fix(ci): isolate routing test setup and correct scheduling docs 2026-09-07 12:40:40 +08:00
Tianyi Cui ab1ee99685 ci: defer macOS ARM runtime and Wine checks to master 2026-09-07 12:40:40 +08:00
Tianyi Cui f50dce316c fix(ci): isolate persistent pnpm indexes on runner data volumes 2026-09-06 22:16:00 +08:00
Tianyi Cui e61d9fc0c7 fix(ci): isolate npm caches and synchronize ACP snapshot completion 2026-09-06 21:47:55 +08:00
Tianyi Cui a1188bbf3f ci: contain release temporary installs and document shared routing 2026-09-06 14:57:11 +08:00
Tianyi Cui f66dd78ff7 ci: route trusted release rehearsals to self-hosted Linux 2026-09-06 13:01:55 +08:00