ci(node-server): run PR and scheduled qualification on free hosted runners (#34560)

Only explicit fast_runners callers (manual, hourly/daily/adhoc builds) keep
Blacksmith; qualified-orcad-template's cache/save jobs always use ubuntu-latest.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
This commit is contained in:
OrcaWin
2026-10-27 15:14:01 -07:00
committed by GitHub
co-authored by OrcaWin
parent 917ef9c737
commit 3058cdd1a8
4 changed files with 19 additions and 18 deletions
+9 -9
View File
@@ -63,7 +63,7 @@ jobs:
if: >-
github.event_name == 'push' ||
(github.event_name == 'pull_request' && github.event.pull_request.draft != true)
runs-on: ${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && 'blacksmith-2vcpu-ubuntu-2404' || 'ubuntu-latest' }}
runs-on: ${{ inputs.fast_runners && 'blacksmith-2vcpu-ubuntu-2404' || 'ubuntu-latest' }}
timeout-minutes: 5
outputs:
should_run: ${{ steps.scope.outputs.should_run || steps.graph.outputs.should_run }}
@@ -153,10 +153,10 @@ jobs:
fail-fast: false
matrix:
os: ${{ fromJSON(needs.changes.outputs.runners || '["ubuntu-22.04","ubuntu-24.04-arm","macos-15","macos-15-intel","windows-2022","windows-11-arm"]') }}
# Keep platform keys stable for slot names and Windows cross-compilation. Hosted Windows x64 is free and
# still finishes before the windows-11-arm and macos-15-intel lanes that set wall time.
# Keep platform keys stable for slot names and Windows cross-compilation. PR and scheduled runs use the
# free hosted label; only explicit fast_runners callers rent Blacksmith where it has the platform.
runs-on: >-
${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && fromJSON('{"ubuntu-22.04":"blacksmith-8vcpu-ubuntu-2204","ubuntu-24.04-arm":"blacksmith-8vcpu-ubuntu-2404-arm","macos-15":"blacksmith-6vcpu-macos-15","macos-15-intel":"macos-15-intel","windows-2022":"windows-2022","windows-11-arm":"windows-11-arm"}')[matrix.os] || matrix.os }}
${{ inputs.fast_runners && fromJSON('{"ubuntu-22.04":"blacksmith-8vcpu-ubuntu-2204","ubuntu-24.04-arm":"blacksmith-8vcpu-ubuntu-2404-arm","macos-15":"blacksmith-6vcpu-macos-15"}')[matrix.os] || matrix.os }}
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
@@ -337,7 +337,7 @@ jobs:
${{ !cancelled() && needs.changes.outputs.should_run != 'false' &&
needs.changes.outputs.qualification != 'false' &&
(github.event_name != 'pull_request' || github.event.pull_request.draft != true) }}
runs-on: ${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-latest' }}
runs-on: ${{ inputs.fast_runners && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-latest' }}
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
@@ -380,7 +380,7 @@ jobs:
image: quay.io/pypa/manylinux_2_28_x86_64@sha256:407f771c51a2c3e83ebe5a7970b4289ead3a6db21d9b9c089168775cad11d328
- os: ubuntu-24.04-arm
image: quay.io/pypa/manylinux_2_28_aarch64@sha256:c22ffd129ac99a8a42d1f2c2f4e88a9089288dd9ee987a7092da1c7dc48f27a9
runs-on: ${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && (matrix.os == 'ubuntu-22.04' && 'blacksmith-8vcpu-ubuntu-2204' || 'blacksmith-8vcpu-ubuntu-2404-arm') || matrix.os }}
runs-on: ${{ inputs.fast_runners && (matrix.os == 'ubuntu-22.04' && 'blacksmith-8vcpu-ubuntu-2204' || 'blacksmith-8vcpu-ubuntu-2404-arm') || matrix.os }}
container: ${{ matrix.image }}
timeout-minutes: 25
env:
@@ -442,7 +442,7 @@ jobs:
(github.event_name != 'pull_request' || github.event.pull_request.draft != true) &&
(github.event_name != 'pull_request' || inputs.build_template || inputs.ref != '' ||
needs.changes.outputs.native_compatibility != 'false') }}
runs-on: ${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && 'blacksmith-8vcpu-ubuntu-2204' || 'ubuntu-22.04' }}
runs-on: ${{ inputs.fast_runners && 'blacksmith-8vcpu-ubuntu-2204' || 'ubuntu-22.04' }}
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
@@ -504,7 +504,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04-arm]
runs-on: ${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && (matrix.os == 'ubuntu-22.04' && 'blacksmith-8vcpu-ubuntu-2204' || 'blacksmith-8vcpu-ubuntu-2404-arm') || matrix.os }}
runs-on: ${{ inputs.fast_runners && (matrix.os == 'ubuntu-22.04' && 'blacksmith-8vcpu-ubuntu-2204' || 'blacksmith-8vcpu-ubuntu-2404-arm') || matrix.os }}
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
@@ -570,7 +570,7 @@ jobs:
permissions:
contents: read
actions: read
runs-on: ${{ (inputs.fast_runners || github.event_name == 'pull_request' || github.event_name == 'schedule') && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }}
runs-on: ${{ inputs.fast_runners && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
@@ -7,7 +7,7 @@ on:
required: true
type: string
fast_runners:
description: Use Blacksmith; disable inside the SignPath signing workflow.
description: Qualify on Blacksmith; disable inside the SignPath signing workflow.
type: boolean
default: true
@@ -19,7 +19,7 @@ env:
jobs:
cache:
runs-on: ${{ inputs.fast_runners && 'blacksmith-2vcpu-ubuntu-2404' || 'ubuntu-latest' }}
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
key: ${{ steps.identity.outputs.key }}
@@ -91,7 +91,7 @@ jobs:
save:
needs: [cache, qualify]
if: needs.qualify.result == 'success'
runs-on: ${{ inputs.fast_runners && 'blacksmith-2vcpu-ubuntu-2404' || 'ubuntu-latest' }}
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/download-artifact@v8
@@ -35,7 +35,7 @@ it.each([
expect(runnerFor(workflow.jobs.persistence, os, true)).toBe(fastRunner)
expect(runnerFor(workflow.jobs.persistence, os, undefined)).toBe(os)
for (const event of ['pull_request', 'schedule']) {
expect(runnerFor(workflow.jobs.persistence, os, undefined, event)).toBe(fastRunner)
expect(runnerFor(workflow.jobs.persistence, os, undefined, event)).toBe(os)
}
})
@@ -48,6 +48,9 @@ it('retains both Linux architectures and the pinned libc qualification container
expect(runnerFor(job, os, true)).toBe(
`blacksmith-8vcpu-ubuntu-${os === 'ubuntu-22.04' ? '2204' : '2404-arm'}`
)
for (const event of ['pull_request', 'schedule']) {
expect(runnerFor(job, os, undefined, event)).toBe(os)
}
}
}
const floor = workflow.jobs.linux_glibc_floor
@@ -68,8 +71,8 @@ it.each([
])('sizes %s while preserving the signing workflow override', (name, hostedRunner, fastRunner) => {
expect(runnerFor(workflow.jobs[name], undefined, false)).toBe(hostedRunner)
expect(runnerFor(workflow.jobs[name], undefined, true)).toBe(fastRunner)
expect(runnerFor(workflow.jobs[name], undefined, undefined, 'pull_request')).toBe(fastRunner)
expect(runnerFor(workflow.jobs[name], undefined, undefined, 'schedule')).toBe(fastRunner)
expect(runnerFor(workflow.jobs[name], undefined, undefined, 'pull_request')).toBe(hostedRunner)
expect(runnerFor(workflow.jobs[name], undefined, undefined, 'schedule')).toBe(hostedRunner)
})
it('still builds and uploads cross-compiled Windows template addons on the x64 lane', () => {
@@ -110,9 +110,7 @@ it('keeps SignPath on GitHub runners and isolates Blacksmith qualification cache
"${{ inputs.fast_runners && 'fast' || 'github-hosted' }}"
)
for (const name of ['cache', 'save']) {
expect(workflow.jobs[name]['runs-on']).toBe(
"${{ inputs.fast_runners && 'blacksmith-2vcpu-ubuntu-2404' || 'ubuntu-latest' }}"
)
expect(workflow.jobs[name]['runs-on']).toBe('ubuntu-latest')
}
})