ci: consolidate gates on large runners

This commit is contained in:
Tianyi Cui
2026-07-22 15:04:24 +08:00
parent 03348aa382
commit 3db0b71f91
3 changed files with 192 additions and 13 deletions

View File

@@ -15,6 +15,7 @@ import { selectStaticGates } from './static-shards.ts'
type Mode =
| 'ci-primary'
| 'ci-primary-prebuilt'
| 'ci-static'
| 'ci-lint'
| 'ci-coverage'
@@ -87,6 +88,7 @@ if (results.some(result => result.status === 'failed' || result.status === 'skip
function parseMode(raw: string | undefined): Mode {
switch (raw) {
case 'ci-primary':
case 'ci-primary-prebuilt':
case 'ci-static':
case 'ci-lint':
case 'ci-coverage':
@@ -100,7 +102,7 @@ function parseMode(raw: string | undefined): Mode {
return raw
default:
throw new Error(
`run-gates: expected mode ci-primary | ci-static | ci-lint | ci-coverage | ci-snapshot | ci-artifacts | ci-windows-blocking | ci-windows-observational | node-compat | pre-push | doc-sync, got ${JSON.stringify(raw)}.`,
`run-gates: expected mode ci-primary | ci-primary-prebuilt | ci-static | ci-lint | ci-coverage | ci-snapshot | ci-artifacts | ci-windows-blocking | ci-windows-observational | node-compat | pre-push | doc-sync, got ${JSON.stringify(raw)}.`,
)
}
}
@@ -166,6 +168,8 @@ function gatesForMode(selected: Mode): Gate[] {
switch (selected) {
case 'ci-primary':
return ciPrimaryGates()
case 'ci-primary-prebuilt':
return ciPrimaryPrebuiltGates()
case 'ci-static':
return ciStaticGates()
case 'ci-lint': {
@@ -246,6 +250,14 @@ function ciPrimaryGates(): Gate[] {
]
}
function ciPrimaryPrebuiltGates(): Gate[] {
return ciPrimaryGates()
.filter(gate => gate.id !== 'build')
.map(gate => gate.needs?.includes('build') === true
? { ...gate, needs: gate.needs.filter(id => id !== 'build') }
: gate)
}
function ciStaticGates(): Gate[] {
const gates = [
pnpmScript('runtime-closure', 'verify-runtime-closure', { label: 'runtime closure' }),