ci: run advisory e2e lanes on free hosted runners (#34725)

The layout oracle merge gate keeps Blacksmith via fast_runners: true; the
advisory e2e call, nightly schedule and layout-owner dispatch run on
ubuntu-24.04.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
This commit is contained in:
OrcaWin
2026-10-27 22:08:17 -07:00
committed by GitHub
co-authored by OrcaWin
parent 57c2b53625
commit ca2154945b
4 changed files with 21 additions and 8 deletions
+12 -6
View File
@@ -45,6 +45,12 @@ on:
type: string
default: ''
# Why: the app, orcad and its test template (--dark-test-template) build with it; releases refuse it.
# Why: only required gates pay for Blacksmith; advisory lanes run on free hosted runners.
fast_runners:
description: Run on Blacksmith instead of free GitHub-hosted runners
required: false
type: boolean
default: false
layout_owner:
description: Set to main to build with ORCA_LAYOUT_OWNER=main and record save-divergence reports
required: false
@@ -74,7 +80,7 @@ jobs:
build:
name: build e2e app
if: inputs.test_files == '' || github.event_name != 'pull_request' || inputs.needs_build
runs-on: blacksmith-8vcpu-ubuntu-2404
runs-on: ${{ inputs.fast_runners && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 15
outputs:
changed_e2e_shards: ${{ steps.changed-e2e-shards.outputs.shards }}
@@ -223,7 +229,7 @@ jobs:
name: e2e ${{ matrix.shard_name }}
needs: [build]
if: inputs.test_files == ''
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 30
strategy:
fail-fast: false
@@ -339,7 +345,7 @@ jobs:
name: changed e2e specs (${{ matrix.shard }})
needs: [build]
if: inputs.test_files != '' && (github.event_name != 'pull_request' || inputs.run_changed_e2e)
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 45
strategy:
fail-fast: false
@@ -470,7 +476,7 @@ jobs:
ssh-browser-network-route:
name: ssh browser network route
if: inputs.test_files == '' || contains(inputs.test_files, 'tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts')
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
@@ -494,7 +500,7 @@ jobs:
inputs.test_files == '' ||
contains(inputs.test_files, 'tests/e2e/orcad-serve-mode-switch.spec.ts') ||
contains(inputs.test_files, 'tests/e2e/workspace-layout-oracle-headless.spec.ts')
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 45
env:
ORCA_BACKGROUND_LAUNCH: '1'
@@ -594,7 +600,7 @@ jobs:
name: ssh on managed orcad (Docker ${{ matrix.shard }})
needs: [build]
if: inputs.test_files == '' || contains(inputs.test_files, 'tests/e2e/ssh-orcad-')
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 60
strategy:
fail-fast: false
+1
View File
@@ -1452,6 +1452,7 @@ jobs:
run_changed_e2e: true
needs_build: true
artifact_suffix: -layout-oracle
fast_runners: true
# Keep native IME advisory while PR reliability is established (nightly 20/20, 2026-08-09..29, p50 3m25s); do not hide red via continue-on-error. To gate, add verify.needs, TERMINAL_IME_NATIVE env and separate success-or-skipped validation.
terminal_ime_native:
@@ -268,6 +268,9 @@ describe('pr-e2e-layout-oracle-routing', () => {
// Two calls of the reusable workflow in one run must not share artifact names.
expect(prWorkflow.jobs.layout_oracle.with.artifact_suffix).toBeTruthy()
expect(prWorkflow.jobs.e2e.with.artifact_suffix).toBeUndefined()
// The merge gate keeps Blacksmith speed; the advisory lane runs free.
expect(prWorkflow.jobs.layout_oracle.with.fast_runners).toBe(true)
expect(prWorkflow.jobs.e2e.with.fast_runners).toBeUndefined()
})
})
})
@@ -284,7 +287,9 @@ describe('ssh-browser-e2e-routing', () => {
const run = job.steps.find(
(step) => step.name === 'Run Docker SSH browser network route journeys'
)
expect(job['runs-on']).toBe('blacksmith-4vcpu-ubuntu-2404')
expect(job['runs-on']).toBe(
"${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}"
)
expect(job.if).toContain("inputs.test_files == ''")
expect(job.if).toContain(spec)
expect(install.with['native-runtime']).toBe('node')
+2 -1
View File
@@ -3,7 +3,8 @@
Default to free GitHub-hosted standard runners: the repository is public and the
Enterprise plan allows 500 concurrent jobs (50 macOS). Use Blacksmith only for:
- PR critical-path jobs: unit test shards, preflight and typecheck, and `e2e.yml`.
- PR critical-path jobs: unit test shards, preflight and typecheck, and the layout
oracle gate (`e2e.yml` with `fast_runners: true`). Advisory e2e lanes run hosted.
- `pr.yml` Git compatibility: its parallel real-Git lanes, two through Docker,
exceed test timeouts on 4-vCPU hosted runners.
- macOS packaging: adhoc, hourly, daily and `release-mac-build.yml`. Hosted