Spotlight
- Remote caches for build tools, in your own S3 bucket. The runner agent serves remote caches for Bazel, Go (
GOCACHEPROG), Gradle, sccache, Turborepo, mbx and any HTTP cache, from your stack's cache bucket. List the tools in the new remote_cache input of runs-on/action@v2 on a runner with extras=s3-cache. On vercel/ai, a 95 s Turborepo build restores in under 3 s, and on openai/codex a warm Bazel build takes 130 s instead of 242 s. See Remote caches. Addresses runs-on#410.
- Git checkout caching with
extras=git-cache. Checkouts stream from S3 instead of GitHub, with no workflow changes. A shallow checkout of elastic/kibana takes 13 s instead of 46 s. Git verifies every object, so a bad entry can't change your code. Works on Linux, github.com and GHE.com. See Git checkout caching.
- Ubuntu and Debian package caching with
extras=apt-cache. Packages come from your stack's cache bucket after the first install: many small downloads take about half as long, and installs keep working when the archive is down. apt still checks every signature. Linux only. See apt package caching.
- Faster Magic Cache restores. Large
actions/cache restores now download in parallel ranged requests. A 4 GB restore takes 3 to 6 s, against about 8 s on v3.5.
CloudFormation
- New
MandatoryExtras parameter: extras for every job of the stack, joined with + (for example s3-cache+git-cache+apt-cache), like Terraform's mandatory_extras.
- The WAF no longer blocks GitHub webhooks after a stack update that touches its IP sets, including the upgrade to v3.6.
- Stack resources (except the WAF IP sets) carry an
aws-apn-id-135269210855 tag for AWS Partner Revenue Measurement. Check it against any tag policy you enforce.
Terraform
- Fleet stacks get the runner cache Flex already has, so custom AMIs without a runner work on Fleet too.
spot_circuit_breaker counts interruptions per instance family. Its format and default (2/15/30) don't change.
logger_level applies to the runner agent too.
apt-cache only saves NAT traffic if your VPC has an S3 gateway endpoint. The full-featured example adds one.
- The same WAF and tag changes as CloudFormation.
Other fixes
- Spot capacity:
- The Spot circuit breaker pauses Spot only for the interrupted instance family. Before, it sent the whole stack on-demand.
- A full on-demand vCPU quota no longer fails jobs. Flex waits and retries. Fixes runs-on#569.
- Flex relaunches runners that GitHub never assigned on a slower schedule, so idle replacements don't pile up during GitHub incidents.
- Fleet retries the unfilled part of a partly filled Spot request on-demand.
- GitHub incidents:
- A spurious 404 for an existing
runs-on.yml no longer launches the fallback runner or drops your pools.
- When GitHub's job API lags, Flex no longer relaunches jobs that already ran, or reports finished jobs as cancelled.
- Fleet recreates a scale-set session that silently stops delivering jobs.
- Fleet stacks whose GitHub App lacks the Actions permission no longer drain their API rate limit.
- Large matrices: in long
max-parallel matrices, a sibling job taking a job's runner no longer uses up that job's launch attempts. Before, jobs could fail at "Set up runner" or stay queued forever.
- StickyDisk: after a Spot interruption, a job with a sticky disk is reconciled and rerun right away, instead of failing reconciliation for about 2 hours. Fixes runs-on#573.
- Memory and disk:
- A job that fills the disk fails its step with "No space left on device", instead of crashing the runner.
- An out-of-memory step is killed instead of the runner, including
docker build steps and 16 GiB runners, and the job reports the failure.
extras=tmpfs is sized at the runner's memory minus a small reserve (7 GiB on an 8 GiB runner) instead of 150 % of RAM, so filling it fails the step instead of losing the job.
- Runner: RunsOn now ships its own build of the GitHub Actions runner (runs-on/runner). It serves your workflow's actions from the stack's cache bucket, so jobs skip most action downloads. A runner missing from the image is installed from the stack's runner cache, never from github.com.
- Agent AWS credentials: the runner agent always uses the instance role for its own AWS calls. Credentials,
AWS_CA_BUNDLE and endpoint overrides set on the image no longer apply to it, so a custom AMI behind a private CA must install the CA in the OS trust store. Your workflow steps keep their own AWS configuration.
bash -l keeps the job's PATH, as on GitHub-hosted runners. Preinstall and prerun scripts can write to $GITHUB_PATH.
- .NET on Linux runners uses the system's ICU, as on GitHub-hosted runners. Fixes runs-on#568.
- Windows runners start bootstrapping 10 to 25 s sooner.
- Runner agent logs in CloudWatch are much smaller. Fixes runs-on#570.
- A deprecated
disk field on a Fleet runner no longer stops fleetd from starting.
- Go dependency security updates, and Go 1.27.3. Includes v3.5.1's removal of the compromised emSign ECC Root CA - G3 (runs-on#572).
Release resources