gha-runner-scale-set-0.15.0
Actions Runner Controller released gha-runner-scale-set 0.15.0 with 79 changes, including removal of legacy e2e tests and several unused APIs and printer columns. New flags add default and per-controller max-concurrent-reconciles settings, and terminationGracePeriodSeconds is now configurable. The release also includes many fixes to listener pod patching, RBAC permissions, and scale-set drift detection.
platform teams Platform teams running self-hosted GitHub Actions runners on Kubernetes should review the removed status-field printer columns and the new reconcile concurrency and termination grace period settings before upgrading. Runner status is now reported through metrics rather than status fields, so dashboards or scripts that read those fields will need updating.
written by claude-haiku-5-5, prompt 7cbe154, checked by publish rules
- -Remove orphaned testserver packageremoved
- -Remove the integrity hash annotationremoved
- -Remove legacy e2e tests and promote v2 testsremoved
- -Remove AutoscalingRunnerSet printer columns referencing removed status fieldsremoved
- -Remove dead GitHubConfig surface left by scaleset migrationremoved
- -Remove constants orphaned by #4059 and unused proxy env var namesremoved
- ~Make controller terminationGracePeriodSeconds configurable and align it with graceful shutdown timeoutchanged
- ~Make the Outdated phase revision-awarechanged
- +Add context: . to the docker/build-push-actionadded
- +Introduce cache for lookups of desired resource state, to reduce the amount of allocations in the controlleradded
- +Add guards on timings so we don't publish incorrect metricsadded
- +Add @actions/actions-runtime to codeownersadded
57 more lines
- +Add default and per-controller max-concurrent-reconciles flagsadded
- *Fix patch on autoscaling runner set when creating a runner scale setfixed
- *Fix typo and rename status to phasefixed
- *Fix deprecated callsfixed
- *Fix EphemeralRunnerSet metadata drift check comparing against the wrong valuefixed
- *Fix listener pod patch recoveryfixed
- *Fix listener replacement loop for empty collectionsfixed
- *Avoid listener pod recreation for prepended sidecarsfixed
- *Fix patch permissions in generated controller RBACfixed
- *Fix experimental charts and upgrade Helm toolingfixed
- *Fix annotation merging for labels-only resource metadatafixed
- *Fix custom runner mode volume injectionfixed
- *Fix empty collection drift across scale-set resourcesfixed
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Gha-runner-scale-set-controller-experimental helm chartother
- ·Gha-runner-scale-set-experimental helm chartother
- ·Do not use EqualFold when checking u.Hostother
- ·Upgrade resources in-place, causing 1-1 mapping between autoscaling runner set and ephemeral runner setother
- ·Updates: runner to v2.335.1other
- ·Increase e2e wait timeouts to reduce flakinessother
- ·Mark generated files as linguist-generatedother
- ·Tag fields with optional allowing patches without issuesother
- ·Use Patch instead of Updateother
- ·Use metrics to display runner statuses instead of status field for EphemeralRunnerSet and AutoscalingRunnerSetother
- ·Updates: runner to v2.336.0other
- ·Updates: runner to v2.337.0other
- ·Re-register the runner scale set when it is gone from the Actions serviceother
- ·Set listener qps and burstother
- ·Render label and annotation values as stringsother
- ·Validate label and annotation metadata at chart render timeother
- ·Validate and coerce listener metadata at render timeother
- ·Detect listener pod drift by comparing the pod, not a hashother
- ·Track AutoscalingRunnerSet updates with metadata.generationother
- ·Track runner spec updates with an actionable revisionother
- ·Defer scale up until the listener publishes a state that accounts for finished runnersother
- ·Use lazy copy to patch resources to ensure multiple modifications are applied to the base resourceother
- ·Let the listener own the EphemeralRunner Running phase transitionother
- ·Filter owned-resource events in the workqueueother
- ·Switch the scale set off instead of rebuilding it when runners are outdatedother
- ·Pin the listener's optimistic lock to API server behaviorother
- ·Keep the outdated phase until the runner spec itself changesother
- ·Deregister runners from the Actions service in the backgroundother
- ·Revert "Remove legacy e2e tests and promote v2 tests (#4658)"other
- ·Cover the outdated runner lifecycle end to endother
- ·Stop paying a write to release a registration a runner already releasedother
- ·Set per-controller reconcile concurrency defaults and remove --default-max-concurrent-reconcilesother
- ·Document which listenerMetrics example labels are not exposed by defaultother
- ·Hand a finished runner's pod back as soon as its job is overother
- ·Create runner pod before recording identityother
- ·Reject unsafe chart metadata integersother
- ·Keep the pod of a runner that has not recorded its ID during set cleanupother
- ·Reduce ephemeral runner status contentionother
- ·Release AutoscalingRunnerSet deletion when the GitHub config secret is goneother
- ·Scale down runners whose pod never reports the runner containerother
- ·Prepare 0.15.0 releaseother
10 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump the gomod group across 1 directory with 9 updatesmaintenance
- ·Bump the actions group across 1 directory with 6 updatesmaintenance
- ·Bump the gomod group across 1 directory with 11 updatesmaintenance
- ·Bump the actions group across 1 directory with 2 updatesmaintenance
- ·Bump the actions group across 1 directory with 6 updatesmaintenance
- ·Bump golang.org/x/crypto from 0.51.0 to 0.52.0maintenance
- ·Fix nil ResourceCache panic in stale scale set testsmaintenance
- ·Bump the actions group across 1 directory with 8 updatesmaintenance
- ·Bump go and go dependencies and modify deprecated Requeue to RequeueAftermaintenance
- ·Bump the gomod group with 4 updatesmaintenance
79 lines6 removed5 added2 changed12 fixed44 other10 maintenancetyped from the source notes
gha-runner-scale-set-0.14.2
- !Bump Go to 1.26.2 to fix critical security vulnerabilitiessecurity
- +Add option to disable workqueue bucket rate limiteradded
- +Add a flag for enabling pprof on the controller manageradded
- +Add health and readiness probes to controller manageradded
- *Fix orphan no-permission ServiceAccount in kubernetes-novolume modefixed
- *Fix empty GVK in OwnerReferences for modern controllersfixed
- *Detect init container failure in EphemeralRunner controllerfixed
- *Fix secret reconciliation updates for the listener podfixed
- *Fix job execution duration when runner assign time is not setfixed
- *Fix typo and rename status to phasefixed
- *Fix helm chart validation workflowfixed
- ·Gha-runner-scale-set-controller controller imageother
10 more lines
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Gha-runner-scale-set-controller-experimental helm chartother
- ·Gha-runner-scale-set-experimental helm chartother
- ·Updates: runner to v2.334.0other
- ·Render empty arrays for kubernetes-novolume volumes fieldsother
- ·Update CODEOWNERSother
- ·Port rate limiter to experimental chartsother
- ·Revert "Fix typo and rename status to phase"other
- ·Prepare 0.14.2 releaseother
2 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump the actions group with 3 updatesmaintenance
- ·Bump Go to 1.26.3maintenance
24 lines1 security3 added7 fixed11 other2 maintenancetyped from the source notes
gha-runner-scale-set-0.14.1
- -Remove redundant ticks around "name" and use pluralremoved
- *Fix chart version for publishingfixed
- *Fix null field for resource metadata fields in experimental chartfixed
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Gha-runner-scale-set-controller-experimental helm chartother
- ·Gha-runner-scale-set-experimental helm chartother
- ·Updates: runner to v2.333.0other
- ·Updates: runner to v2.333.1other
- ·Prepare 0.14.1 releaseother
1 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump actions/scaleset to v0.3.0maintenance
12 lines1 removed2 fixed8 other1 maintenancetyped from the source notes
gha-runner-scale-set-0.14.0
- -Remove actions clientremoved
- +Add default linux nodeSelector to listener podadded
- +Allow users to apply labels and annotations to internal resourcesadded
- +Introduce experimental chart releaseadded
- +Add chart-level API to customize internal resourcesadded
- +Add multi-label support to scalesetsadded
- +Add @steve-glass to CODEOWNERSadded
- *Fix AcivityId typo in error stringsfixed
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Gha-runner-scale-set-controller-experimental helm chartother
12 more lines
- ·Gha-runner-scale-set-experimental helm chartother
- ·Updates: runner to v2.331.0other
- ·Potential fix for code scanning alert no. 7: Use of a broken or weak cryptographic hashing algorithm on sensitive dataother
- ·Include the HTTP status code in jit errorother
- ·Switch client to scaleset library for the listener and update mocksother
- ·Updates: runner to v2.332.0 container-hooks to v0.8.1other
- ·Bump Go versionother
- ·Moving to scaleset client for the controllerother
- ·Manually bump dependencies since it needs fixes related to the controller runtime APIother
- ·Regenerate manifests for experimental chartsother
- ·Shutdown the scaleset when runner is deprecatedother
- ·Prepare 0.14.0 releaseother
2 maintenance lines (dependency bumps, CI, tests, docs)
- ·Fix tests and generate mocksmaintenance
- ·Bump the actions group across 1 directory with 6 updatesmaintenance
26 lines1 removed6 added1 fixed16 other2 maintenancetyped from the source notes
gha-runner-scale-set-0.13.1
- -Delete listener resources without requeueing on each callremoved
- -Remove old e2e testsremoved
- ~E2e: move from deprecated openebs charts to new registrychanged
- ~Make restart pod more flexible to different failure scenarioschanged
- +Add ephemeral runner finalizer during creation and check finalizer without requeueadded
- +Add support for giving kubernetes mode scaleset service account additional permissionsadded
- *Fix first interaction actionfixed
- *Fix for code scanning alert no. 5: Workflow does not contain permissionsfixed
- *Handle resource quota on status forbidden by retryingfixed
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
10 more lines
- ·Updates: runner to v2.329.0 container-hooks to v0.8.0other
- ·Bump kubebuilder tools in the workflowother
- ·Use combination of namespace, GitHub URL, and runner group when hashing the listener nameother
- ·Create e2e test suiteother
- ·Updates: runner to v2.330.0other
- ·Code style changes on the controllerother
- ·Typo in test name caused test to not executeother
- ·Restart the listener if pod is evictedother
- ·Re-schedule if the failed reason starts with OutOfother
- ·Prepare 0.13.1 releaseother
9 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump github/codeql-action from 3 to 4 in the actions groupmaintenance
- ·Bump timeout for min runners workflow to 30smaintenance
- ·Upgrade Docker and Docker Compose to match GH hosted runnermaintenance
- ·Bump the gomod group across 1 directory with 11 updatesmaintenance
- ·Bump golang.org/x/crypto from 0.43.0 to 0.45.0maintenance
- ·Bump the actions group across 1 directory with 4 updatesmaintenance
- ·Bump the actions group with 3 updatesmaintenance
- ·Bump the gomod group across 1 directory with 10 updatesmaintenance
- ·Bump golangci/golangci-lint-action from 9.1.0 to 9.2.0 in the actions groupmaintenance
31 lines2 removed2 added2 changed3 fixed13 other9 maintenancetyped from the source notes
gha-runner-scale-set-0.13.0
- -Remove deprecated preserveUnknownFields from CRDsremoved
- -Remove JIT config from ephemeral runner status fieldremoved
- -Remove ephemeral runner when exit code != 0 and is patched with the jobremoved
- +Add ubuntu 24.04 supportadded
- +Add Missing Languages to CodeQL Advanced Configurationadded
- +Add workflow name and target labelsadded
- +Introduce new kubernetes-novolume modeadded
- *Fix image pull secrets list arguments in the chartfixed
- *Fix usage of underscore in Runner Scale Set namefixed
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
12 more lines
- ·Update CodeQL workflow for v3 (global-run-codeql.yaml)other
- ·Updates: runner to v2.326.0other
- ·Updates: runner to v2.327.0other
- ·Updates: runner to v2.327.1other
- ·Updates: runner to v2.328.0other
- ·Requeue if create pod returns already exists errorother
- ·Update CODEOWNERSother
- ·Ensure ephemeral runner is deleted from the service on exit != 0other
- ·Potential fix for code scanning alert no. 3: Workflow does not contain permissionsother
- ·Potential fix for code scanning alert no. 1: Workflow does not contain permissionsother
- ·Bump all dependenciesother
- ·Prepare 0.13.0 releaseother
10 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump the actions group across 1 directory with 5 updatesmaintenance
- ·Remove workflow actions version comments since upgrades are done via dependabotmaintenance
- ·Update example GitHub URLs in values.yaml to include an example for enterprise account-level runnersmaintenance
- ·Bump docker/login-action from 3.4.0 to 3.5.0 in the actions groupmaintenance
- ·Bump actions/checkout from 4 to 5 in the actions groupmaintenance
- ·Fix repo path typomaintenance
- ·Update CODEOWNERS to include new maintainermaintenance
- ·Bump the actions group across 1 directory with 5 updatesmaintenance
- ·Fix broken Grafana dashboard JSON pathmaintenance
- ·Bump the gomod group across 1 directory with 4 updatesmaintenance
34 lines3 removed4 added2 fixed15 other10 maintenancetyped from the source notes
gha-runner-scale-set-0.12.1
- -Remove cache for build-push-actionremoved
- -Remove duplicate float64 callremoved
- -Remove check if runner exists after exit code 0removed
- *Fix indentation of startupProbe attributes in dind sidecarfixed
- *Fix dind sidecar templatefixed
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Explicitly requeue during backoff ephemeral runnerother
- ·Prepare 0.12.1 releaseother
1 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump build-push-action to 6.18.0maintenance
11 lines3 removed2 fixed5 other1 maintenancetyped from the source notes
gha-runner-scale-set-0.12.0
- -Delete config secret when listener pod gets deletedremoved
- ~Refactor resource naming removing unnecessary calculationschanged
- +Move dind to sidecaradded
- +Add missing backtick to metrics.serviceMonitor.namespace line to correct formattingadded
- +Allow use of client id as an app idadded
- +Add job_workflow_ref label to listener metricsadded
- +Add startup probe to dind side-caradded
- +Add response body to error when fetching access tokenadded
- *Fix busy runners metricfixed
- *Fix code block fencesfixed
- *Fix docker lint warningsfixed
- *Avoid nil point when config.Metrics is nil and expose all metrics if none are configuredfixed
14 more lines
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Include more context to errors raised by github/actions clientother
- ·Pin third party actionsother
- ·Upgrade(golangci-lint): v2.1.2other
- ·Revised dashboardother
- ·Bump go versionother
- ·Create backoff mechanism for failed runners and allow re-creation of failed ephemeral runnersother
- ·Updates: runner to v2.324.0 container-hooks to v0.7.0other
- ·Relax version requirements to allow patch version mismatchother
- ·Updates: runner to v2.325.0other
- ·Azure Key Vault integration to resolve secretsother
- ·Prepare 0.12.0 releaseother
3 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump the gomod group across 1 directory with 7 updatesmaintenance
- ·Bump github.com/cloudflare/circl from 1.6.0 to 1.6.1maintenance
- ·Bump github.com/golang-jwt/jwt/v5 from 5.2.1 to 5.2.2maintenance
29 lines1 removed6 added1 changed4 fixed14 other3 maintenancetyped from the source notes
gha-runner-scale-set-0.11.0
- -Drop verbose flag from runner scale set init-dind-externals copyremoved
- -Remove old githubrunnerscalesetlistener, remove warning and fix config bugremoved
- ~Rename log from target/actual to build/autoscalingRunnerSet versionchanged
- +Allow namespace overridesadded
- +Add events role permission to leader_election_roleadded
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
- ·Cmd/ghalistener/config: export Validateother
- ·Updated dead linkother
- ·Clarify syntax for githubConfigSecretother
- ·Updates: runner to v2.322.0other
13 more lines
- ·Sanitize labels ending in hyphen, underscore, and dotother
- ·Metrics cardinality for ghalistenerother
- ·Use Ready from the pod conditions when setting it to the EphemeralRunnerother
- ·AutoscalingRunnerSet env: not Rendering correctlyother
- ·Include custom annotations and labels to all resources created by gha-runner-scale-set chartother
- ·Wrap errors in controller helper methods and swap logic in cleanupsother
- ·Clean up as much as possible in a single pass for the EphemeralRunner reconcilerother
- ·Use gha-runner-scale-set-controller.chart instead of .Chart.Versionother
- ·Trim volume and container helpers in gha-runner-scale-setother
- ·Small readme updates for readabilityother
- ·Updates: runner to v2.323.0other
- ·Create configurable metricsother
- ·Prepare 0.11.0 releaseother
7 maintenance lines (dependency bumps, CI, tests, docs)
- ·Update dependabot config to group packages (& include actions eco)maintenance
- ·Fix template tests and add go test on gha-validate-chartmaintenance
- ·End markdown code block correctlymaintenance
- ·Bump golang.org/x/net from 0.25.0 to 0.33.0maintenance
- ·Update all dependencies, conforming to the new controller-runtime APImaintenance
- ·Added OwnerReferences during resource creation for EphemeralRunnerSet, EphemeralRunner, and EphemeralRunnerPodmaintenance
- ·Bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2maintenance
32 lines2 removed2 added1 changed20 other7 maintenancetyped from the source notes
gha-runner-scale-set-0.10.1
- *Fix helm chart bug related to runnerMaxConcurrentReconcilesfixed
1 line1 fixedtyped from the source notes
gha-runner-scale-set-0.10.0
- ~Add exponential backoff when generating runner reg tokenschanged
- ~Make EphemeralRunnerController MaxConcurrentReconciles configurablechanged
- ~Make EphemeralRunnerReconciler create runner pods earlierchanged
- ~Make k8s client rate limiter parameters configurablechanged
- ~Update docs with details for the dashboard visualizationschanged
2 maintenance lines (dependency bumps, CI, tests, docs)
- ·Bump github.com/bradleyfalzon/ghinstallation/v2 from 2.8.0 to 2.12.0maintenance
- ·Bump golang.org/x/crypto from 0.22.0 to 0.31.0maintenance
7 lines5 changed2 maintenancetyped from the source notes
gha-runner-scale-set-0.9.3
- ~AutoscalingListener controller: Inspect listener container state instead of pod phasechanged
- ~Exclude label prefix propagationchanged
- ~Check status code of fetch access token for github appchanged
- ~Remove .Named() from the ephemeral runner controllerchanged
- ~Customize work directorychanged
- ~Fix problem with ephemeralRunner Succeeded state before build executedchanged
- ~Remove finalizers in one pass to speed up cleanups AutoscalingRunnerSetchanged
- ·Gha-runner-scale-set-controller controller imageother
- ·Gha-runner-scale-set-controller helm chartother
- ·Gha-runner-scale-set helm chartother
10 lines7 changed3 othertyped from the source notes
11 older releases
| 0.9.2 | 2024-05-20 | patch | ~~~~~ 8 lines |
| 0.9.1 | 2024-04-17 | patch | ~~~~~ 8 lines |
| 0.9.0 | 2024-03-27 | minor | ~~~~~~~ 13 lines |
| 0.8.3 | 2024-02-28 | patch | ~~~ 6 lines |
| 0.8.2 | 2024-01-26 | patch | *** 6 lines |
| 0.8.1 | 2023-12-21 | patch | ~ 4 lines |
| 0.8.0 | 2023-12-20 | minor | ~~~~~~~~~~~~ 22 lines |
| 0.7.0 | 2023-11-15 | minor | +~~~~~~~~~~ 15 lines |
| 0.6.1 | 2023-09-26 | patch | ~~~~ 7 lines |
| 0.6.0 | 2023-09-15 | minor | ~~~~~ 8 lines |
| 0.5.0 | 2023-08-21 | minor | security ~~~~~~~~~~~~~~~~~! 24 lines |