Skip to content

feat: configurable runs-on across all reusable CI/CD workflows (default = current self-hosted)#107

Merged
Laffs2k5 merged 4 commits into
mainfrom
feat/runs-on-input
Jun 30, 2026
Merged

feat: configurable runs-on across all reusable CI/CD workflows (default = current self-hosted)#107
Laffs2k5 merged 4 commits into
mainfrom
feat/runs-on-input

Conversation

@Laffs2k5

@Laffs2k5 Laffs2k5 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

What

Adds a runs-on input to all three reusable workflows so calling repos can target GitHub-hosted larger runners instead of the self-hosted dsb-builder pool — 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.

  • Default is the current hardcoded value ["self-hosted", "dsb-builder", "linux", "x64"] → existing callers unaffected.
  • JSON-array string + 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-conclusion gates stay on ubuntu-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, image builder-app-platform-ghr-image v1.1: deno/typst/uv/helm4): Maven build → ACR push → helm upgrade deploy to private DEV AKS → ephemeral PR env.

Pre-release

Movable dev tag runs-on-input points at this branch for piloting. After review, release as a new minor v4.x (move v4) per the dev-and-release guide; callers then consume the stable tag.

🤖 Generated with Claude Code

Laffs2k5 and others added 3 commits June 29, 2026 11:05
…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>
@Laffs2k5 Laffs2k5 marked this pull request as ready for review June 30, 2026 05:55
@Laffs2k5 Laffs2k5 changed the title feat: configurable runs-on in ci-cd-default (default = current self-hosted) feat: configurable runs-on across all reusable CI/CD workflows (default = current self-hosted) Jun 30, 2026
…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>
@Laffs2k5 Laffs2k5 merged commit f0354d2 into main Jun 30, 2026
3 checks passed
@Laffs2k5 Laffs2k5 deleted the feat/runs-on-input branch June 30, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants