mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user