mirror of
https://github.com/stablyai/orca.git
synced 2026-09-30 00:03:15 +00:00
ci: use ARM unit runners, overlap web builds, and reuse verifier fixtures (#23376)
* test: reuse isolated mobile bundle fixtures for verifier checks * ci: run PR unit shards on ARM and overlap independent web builds * docs: record controlled CI overlap and runner measurements * test: observe WebRTC packets with the host clock * ci: isolate Windows installer CIM probe from native test load * docs: record native probe scheduling validation --------- Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
This commit is contained in:
@@ -70,6 +70,22 @@ jobs:
|
||||
if: steps.typecheck-cache.outputs.cache-hit != 'true'
|
||||
run: pnpm run typecheck
|
||||
|
||||
warm-linux-arm:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
ORCA_BACKGROUND_LAUNCH: '1'
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: ./.github/actions/install-node-dependencies
|
||||
with:
|
||||
native-runtime: node
|
||||
node-version: '24'
|
||||
- name: Verify native cache is usable
|
||||
run: node config/scripts/ensure-native-runtime.mjs --check-only
|
||||
|
||||
warm-windows:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
name: Node next compatibility
|
||||
name: Scheduled x86 unit compatibility
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Full future-runtime coverage is useful, but not worth doubling every PR matrix.
|
||||
# Keep current and future Node coverage on x86 while PR unit shards use ARM.
|
||||
- cron: '0 10 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -14,9 +14,13 @@ permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
# A cold cache would otherwise make all eight Node 26 shards compile the same native addons.
|
||||
# Prime each Node ABI before its shards restore native modules.
|
||||
test_native_cache:
|
||||
name: prepare test native cache node 26
|
||||
name: prepare test native cache node ${{ matrix.node }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node: ['24', '26']
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -28,10 +32,10 @@ jobs:
|
||||
- uses: ./.github/actions/install-node-dependencies
|
||||
with:
|
||||
native-runtime: node
|
||||
node-version: '26'
|
||||
node-version: ${{ matrix.node }}
|
||||
|
||||
test:
|
||||
needs: [test_native_cache]
|
||||
uses: ./.github/workflows/unit-tests.yml
|
||||
with:
|
||||
node_versions: '["26"]'
|
||||
node_versions: '["24", "26"]'
|
||||
|
||||
@@ -606,7 +606,7 @@ jobs:
|
||||
name: prepare test native cache node 24
|
||||
needs: [code_paths]
|
||||
if: needs.code_paths.outputs.native_cache_changed == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04-arm
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -629,6 +629,7 @@ jobs:
|
||||
uses: ./.github/workflows/unit-tests.yml
|
||||
with:
|
||||
node_versions: '["24"]'
|
||||
runner: ubuntu-24.04-arm
|
||||
|
||||
# Why a separate job: the test needs a real Chrome, and the sharded `test` matrix
|
||||
# would pay for it on every shard to run one file in whichever shard it landed in.
|
||||
@@ -897,6 +898,8 @@ jobs:
|
||||
exit "$status"
|
||||
|
||||
- name: Project web client from renderer build
|
||||
id: web-client
|
||||
background: true
|
||||
run: pnpm run build:web-from-renderer
|
||||
|
||||
# Why here and not inside "Build package inputs": this job assembles packaging inputs step by
|
||||
@@ -908,7 +911,7 @@ jobs:
|
||||
- name: Build native components
|
||||
run: pnpm run build:native
|
||||
|
||||
- wait: linux-package-tools
|
||||
- wait: [linux-package-tools, web-client]
|
||||
|
||||
- name: Package unpacked app
|
||||
env:
|
||||
@@ -1006,13 +1009,18 @@ jobs:
|
||||
|
||||
# vitest runs here directly rather than through `pnpm test`, so the addon
|
||||
# assertions only hold once install-node-dependencies has rebuilt natives.
|
||||
- name: Test Windows installer process probe
|
||||
# Keep cold CIM startup out of the concurrent Electron/native process workload.
|
||||
run: >-
|
||||
pnpm exec vitest run --config config/vitest.config.ts
|
||||
config/scripts/nsis-process-check.test.mjs
|
||||
|
||||
- name: Test Windows-specific boundaries
|
||||
run: >-
|
||||
pnpm exec vitest run --config config/vitest.config.ts
|
||||
config/scripts/rebuild-native-deps.test.mjs
|
||||
config/scripts/rebuild-native-deps-windows-process-tree.test.mjs
|
||||
config/scripts/rebuild-native-deps-node-pty.test.mjs
|
||||
config/scripts/nsis-process-check.test.mjs
|
||||
config/scripts/ensure-native-runtime-job-ownership.test.mjs
|
||||
config/scripts/verify-packaged-node-pty-job-ownership.test.mjs
|
||||
config/scripts/windows-pe-machine.test.mjs
|
||||
|
||||
@@ -8,13 +8,19 @@ on:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
runner:
|
||||
description: Hosted runner for the unit shards; relay integration keeps its x86 host.
|
||||
required: false
|
||||
default: ubuntu-latest
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: tests node ${{ matrix.node }} ${{ matrix.shard }}/${{ matrix.shard_total }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ${{ inputs.runner }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -78,7 +84,11 @@ jobs:
|
||||
if-no-files-found: warn
|
||||
|
||||
relay_integration:
|
||||
name: relay integration node ${{ fromJSON(inputs.node_versions)[0] }}
|
||||
name: relay integration node ${{ matrix.node }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node: ${{ fromJSON(inputs.node_versions) }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -90,7 +100,7 @@ jobs:
|
||||
- uses: ./.github/actions/install-node-dependencies
|
||||
with:
|
||||
native-runtime: node
|
||||
node-version: ${{ fromJSON(inputs.node_versions)[0] }}
|
||||
node-version: ${{ matrix.node }}
|
||||
cache-electron-package: 'true'
|
||||
cache-dependency-path: |
|
||||
pnpm-lock.yaml
|
||||
|
||||
Reference in New Issue
Block a user