QVAC-14347 infra: centralize CI runner labels in a shared catalog - #36
Open
GSServita wants to merge 1 commit into
Open
QVAC-14347 infra: centralize CI runner labels in a shared catalog#36GSServita wants to merge 1 commit into
GSServita wants to merge 1 commit into
Conversation
Add .github/runners.yaml as the single source of truth for specialized CI runner labels, a generated reusable-runner-names workflow that exports them as job outputs, and sync/validate scripts with unit tests. Wire build.yml's Windows jobs to consume the output instead of hardcoding windows-2022. Rolling -latest aliases and matrix.os identities stay hardcoded.
Review StatusCurrent Status: ❌ PENDING Pending reviews: Needs 1 Management or Team Lead, and 1 more from Management, Team Lead, or Member. |
Proletter
approved these changes
Sep 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 What problem does this PR solve?
windows-2022) is hardcoded acrossbuild.yml's Windows jobs. A hosted-image migration (e.g.windows-2022→windows-2025) means grepping and hand-editing every job, and it is easy to miss one.qvac-ext-stable-diffusion.cpprollout of QVAC-14347's runner-label centralization (already landed in the monorepo, piloted onqvac-ext-ggml).📝 How does it solve it?
.github/runners.yamlas the single source of truth for specialized runner labels..github/workflows/reusable-runner-names.yml(via.github/scripts/sync-runner-names.mjs) that exports each catalog entry as a job output.runs-on:evaluates before any step runs, so a reusable workflow's outputs are the only way to feed it a centrally-defined label.build.yml's two Windows jobs to add arunner_namesjob and readruns-on: ${{ needs.runner_names.outputs.windows_2022 }}.-latestaliases andmatrix.osidentities stay hardcoded — they are GitHub aliases / frozen logical identities, not fleet labels.runner-names-validate.yml+.github/scripts/validate-runner-names.mjs+ unit tests that fail if the generated workflow drifts from the catalog or if a wired workflow hardcodes a catalog target. Docs:.github/RUNNERS.md.🧪 How was it tested?
node .github/scripts/validate-runner-names.mjs→ok (1 target, 1 workflow)node --test .github/scripts/test/runner-names.test.mjs→ 9/9 passactionlinton the reusable + validate workflows → clean (the pre-existingactions/checkout@v3/github-script@v3warnings inbuild.ymlare untouched by this PR and out of scope)🛡️ Permissions changes
runner_namescaller job inbuild.yml, the newvalidatejob inrunner-names-validate.yml, and the reusable workflowreusable-runner-names.yml(top-level).permissions: contents: read