feat: configurable runs-on across all reusable CI/CD workflows (default = current self-hosted)#107
Merged
Conversation
…osted) Add a `runs-on` workflow input (JSON-encoded string, decoded with fromJSON) so callers can target GitHub-hosted larger runners instead of the self-hosted `dsb-builder` pool. The default is the historical hardcoded value `["self-hosted", "dsb-builder", "linux", "x64"]`, so existing callers are unaffected. Enables gradual, per-repo migration with one-line rollback. Applied to all five build/deploy jobs (check-docker-disk-space, create-matrix, build-deploy, deploy-to-static, prune-maven-artifacts). The final `ci-cd-conclusion` gate stays on ubuntu-latest (mirrors the terraform pipeline). Phase A (global only) — per-app override via the apps[] matrix is a follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Recommend '["runner-name"]' (uniform with the default label array) over the bare JSON-string form '"runner-name"' to avoid the confusing nested quoting. Both still work via fromJSON. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Extend the runs-on input (default = current self-hosted set) to the other two reusable workflows so a repo can move its WHOLE pipeline to GitHub-hosted runners, not just ci-cd-default: - maven-artifacts-pruner.yml (called by app repos' prune workflows, incl. test-application) - ci-cd-build-deploy-maven-lib.yml (maven-library repos) Same approach as ci-cd-default: JSON-array string decoded with fromJSON; the ci-cd-conclusion gate stays on ubuntu-latest. No hardcoded [self-hosted, dsb-builder, linux, x64] remains in any reusable workflow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…put)
Refine the runs-on mechanism per review:
- Input is now a PLAIN STRING (like the terraform actions), default "". Opting a repo
in is just `runs-on: builder-app-platform-ghr-ubuntu-large` — no more JSON-array-in-
string clunk. The multi-label self-hosted default is kept inside each workflow as a
fromJSON('["self-hosted","dsb-builder","linux","x64"]') fallback, so an unset/empty
input preserves the exact historical behaviour.
- PER-APP override: build/deploy matrix jobs resolve
`matrix.app-vars.runs-on || inputs.runs-on || <self-hosted default>`, so a `runs-on`
field on an apps[] entry wins, else the global input, else self-hosted. Relies on
`||` short-circuiting (null/'' are falsy) — no create-app-vars-matrix change needed.
- Applied consistently across ci-cd-default, ci-cd-build-deploy-maven-lib and
maven-artifacts-pruner; ci-cd-conclusion gates stay on ubuntu-latest.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Artlvns
approved these changes
Jun 30, 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
Adds a
runs-oninput to all three reusable workflows so calling repos can target GitHub-hosted larger runners instead of the self-hosteddsb-builderpool — the Phase A retargeting mechanism for the GitHub-hosted runner migration:ci-cd-default.yml(app build/deploy)maven-artifacts-pruner.yml(called by app repos' prune workflows, incl. test-application)ci-cd-build-deploy-maven-lib.yml(maven-library repos)So a repo can move its whole pipeline, not just the build.
["self-hosted", "dsb-builder", "linux", "x64"]→ existing callers unaffected.fromJSON(), so one input expresses both a self-hosted label array and a single GitHub-hosted runner name. Opt in:runs-on: '["builder-app-platform-ghr-ubuntu-large"]'; roll back: remove it.ci-cd-conclusiongates stay onubuntu-latest. No hardcoded self-hosted set remains in any reusable workflow.Validated end-to-end
test-application PR #697 ran fully green on the GitHub-hosted custom-image runner (
builder-app-platform-ghr-ubuntu-large, imagebuilder-app-platform-ghr-imagev1.1: deno/typst/uv/helm4): Maven build → ACR push →helm upgradedeploy to private DEV AKS → ephemeral PR env.Pre-release
Movable dev tag
runs-on-inputpoints at this branch for piloting. After review, release as a new minorv4.x(movev4) per the dev-and-release guide; callers then consume the stable tag.🤖 Generated with Claude Code