Repository navigation
ci: run private repos on RunsOn instead of hbr1 - #37
Merged
Merged
Conversation
When the runner input is a RunsOn label (runs-on=...), enable the Magic Cache via runs-on/action and turn the Actions cache back on: setup-java and setup-gradle caching, and the Buildx type=gha layer cache. hbr1 ARC and GitHub-hosted runners are unchanged.
hbrombeer
marked this pull request as ready for review
October 17, 2026 16:35
Private repositories now default to RunsOn spot instances in our AWS account instead of the grounds-runners ARC pool on hbr1: - builds (gradle-ci, gradle-publish, docker-gradle-build-push, preview build): m8a.xlarge, 4 vCPU / 16 GB, with Magic Cache - API-only jobs (release-please, label-sync, preview slashcmd, mint, evict): m8a.large, 2 vCPU / 8 GB The Magic Cache is now detected from the runner name, so it also applies to callers that pass their own RunsOn label. Public repos stay on GitHub-hosted runners.
Allow m7a and m8i next to m8a at the same size and pick spot pools by capacity, so jobs stay on spot instead of falling back to on-demand when one pool runs dry.
hbrombeer
added a commit
that referenced
this pull request
Oct 19, 2026
Private repositories pay for artifact storage out of the org's Actions budget. Once it is spent, every upload fails: game-survivalgames run 39265980480 pushed its image and then went red in "Generate SBOM", whose anchore/sbom-action uploads the SPDX file as an artifact by default. - docker-gradle-build-push: drop the anchore SBOM scan and the sbom-* upload. The push build now attaches an SPDX SBOM attestation to the image in GHCR (`sbom: true`), next to the provenance attestation it already had. Nothing downloaded the sbom-* artifacts. - docker-gradle-build-push, platform-test-preview: set DOCKER_BUILD_RECORD_UPLOAD=false so build-push-action no longer uploads the .dockerbuild record. The build summary stays. - Contract tests: assert no artifact uploads, and bring the runner assertions up to date with the RunsOn routing from #37, which left the contract job failing on main.
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.
Private repositories default to RunsOn spot instances (eu-central-1) instead of the
grounds-runnersARC pool on hbr1. Public repos stay on GitHub-hosted runners.cpu=4/ram=16, Magic Cachecpu=2/ram=8All labels use
family=m8a+m7a+m8i/spot=capacity-optimized: only these three families at the fixed size, spot pools picked by capacity so jobs don't fall back to on-demand.On RunsOn the Magic Cache (
runs-on/action@v2) is enabled and the Actions cache turned back on: setup-java, setup-gradle, Buildxtype=gha. Detection is by runner name, so callers that pass their own RunsOn label asrunnerget it too.Measured on the five busiest repos (PR runs, median): builds 54–84 % faster than hbr1, about $0.003–0.01 per job on spot.
Repos with their own runner labels are moved in separate PRs (ci/runs-on branches).