Compare commits

..
Author SHA1 Message Date
dependabot[bot] 8eb60bdaba Bump the actions group across 1 directory with 3 updates
(gha) Validate Helm Charts / Test Chart (push) Has been cancelled
Validate Helm Chart / Lint Chart (push) Has been cancelled
(gha) Validate Helm Charts / Lint Chart (push) Has been cancelled
Bumps the actions group with 3 updates in the / directory: [azure/setup-helm](https://github.com/azure/setup-helm), [docker/login-action](https://github.com/docker/login-action) and [docker/build-push-action](https://github.com/docker/build-push-action).


Updates `azure/setup-helm` from 4.3.1 to 5.0.0
- [Release notes](https://github.com/azure/setup-helm/releases)
- [Changelog](https://github.com/Azure/setup-helm/blob/main/CHANGELOG.md)
- [Commits](https://github.com/azure/setup-helm/compare/1a275c3b69536ee54be43f2070a358922e12c8d4...dda3372f752e03dde6b3237bc9431cdc2f7a02a2)

Updates `docker/login-action` from 4.0.0 to 4.1.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/b45d80f862d83dbcd57f89517bcf500b2ab88fb2...4907a6ddec9925e35a0a9e82d7399ccc52663121)

Updates `docker/build-push-action` from 7.0.0 to 7.1.0
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/d08e5c354a6adb9ed34480a06d141179aa583294...bcafcacb16a39f128d818304e6c9c0c18556b85f)

---
updated-dependencies:
- dependency-name: azure/setup-helm
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: docker/login-action
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: docker/build-push-action
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-04-20 23:32:05 +00:00
16 changed files with 55 additions and 131 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
+6 -6
View File
@@ -94,14 +94,14 @@ jobs:
driver-opts: image=moby/buildkit:v0.10.6 driver-opts: image=moby/buildkit:v0.10.6
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & push controller image - name: Build & push controller image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f
with: with:
file: Dockerfile file: Dockerfile
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
@@ -148,7 +148,7 @@ jobs:
echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
@@ -196,7 +196,7 @@ jobs:
echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
@@ -243,7 +243,7 @@ jobs:
echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
@@ -292,7 +292,7 @@ jobs:
echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
+2 -2
View File
@@ -41,7 +41,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2
with: with:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
@@ -93,7 +93,7 @@ jobs:
version: latest version: latest
- name: Build controller image - name: Build controller image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f
if: steps.list-changed.outputs.changed == 'true' if: steps.list-changed.outputs.changed == 'true'
with: with:
file: Dockerfile file: Dockerfile
+2 -2
View File
@@ -93,7 +93,7 @@ jobs:
uses: actions/checkout@v6 uses: actions/checkout@v6
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
@@ -119,7 +119,7 @@ jobs:
# Unstable builds - run at your own risk # Unstable builds - run at your own risk
- name: Build and Push - name: Build and Push
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f
with: with:
context: . context: .
file: ./Dockerfile file: ./Dockerfile
+1 -1
View File
@@ -6,7 +6,7 @@ endif
DOCKER_USER ?= $(shell echo ${DOCKER_IMAGE_NAME} | cut -d / -f1) DOCKER_USER ?= $(shell echo ${DOCKER_IMAGE_NAME} | cut -d / -f1)
VERSION ?= dev VERSION ?= dev
COMMIT_SHA = $(shell git rev-parse HEAD) COMMIT_SHA = $(shell git rev-parse HEAD)
RUNNER_VERSION ?= 2.334.0 RUNNER_VERSION ?= 2.333.1
TARGETPLATFORM ?= $(shell arch) TARGETPLATFORM ?= $(shell arch)
RUNNER_NAME ?= ${DOCKER_USER}/actions-runner RUNNER_NAME ?= ${DOCKER_USER}/actions-runner
RUNNER_TAG ?= ${VERSION} RUNNER_TAG ?= ${VERSION}
@@ -84,9 +84,6 @@ spec:
- "--listener-metrics-endpoint=" - "--listener-metrics-endpoint="
- "--metrics-addr=0" - "--metrics-addr=0"
{{- end }} {{- end }}
{{- if .Values.pprof.addr }}
- "--pprof-addr={{ .Values.pprof.addr }}"
{{- end }}
{{- range .Values.flags.excludeLabelPropagationPrefixes }} {{- range .Values.flags.excludeLabelPropagationPrefixes }}
- "--exclude-label-propagation-prefix={{ . }}" - "--exclude-label-propagation-prefix={{ . }}"
{{- end }} {{- end }}
@@ -96,26 +93,14 @@ spec:
{{- with .Values.flags.k8sClientRateLimiterBurst }} {{- with .Values.flags.k8sClientRateLimiterBurst }}
- "--k8s-client-rate-limiter-burst={{ . }}" - "--k8s-client-rate-limiter-burst={{ . }}"
{{- end }} {{- end }}
{{- with .Values.flags.rateLimiter }}
{{- with .name }}
- "--workqueue-rate-limiter={{ . }}"
{{- end }}
{{- end }}
command: command:
- "/manager" - "/manager"
{{- if or .Values.metrics .Values.pprof.addr }}
ports:
{{- end }}
{{- with .Values.metrics }} {{- with .Values.metrics }}
- containerPort: {{ required "Values.metrics.controllerManagerAddr must end with a numeric port" (regexFind "[0-9]+$" .controllerManagerAddr) }} ports:
- containerPort: {{regexReplaceAll ":([0-9]+)" .controllerManagerAddr "${1}"}}
protocol: TCP protocol: TCP
name: metrics name: metrics
{{- end }} {{- end }}
{{- if .Values.pprof.addr }}
- containerPort: {{ required "Values.pprof.addr must end with a numeric port" (regexFind "[0-9]+$" .Values.pprof.addr) }}
protocol: TCP
name: pprof
{{- end }}
env: env:
- name: CONTROLLER_MANAGER_CONTAINER_IMAGE - name: CONTROLLER_MANAGER_CONTAINER_IMAGE
value: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" value: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -94,10 +94,6 @@ priorityClassName: ""
# listenerAddr: ":8080" # listenerAddr: ":8080"
# listenerEndpoint: "/metrics" # listenerEndpoint: "/metrics"
## To enable pprof, uncomment the addr field below.
pprof: {}
# addr: ":6060"
flags: flags:
## Log level can be set here with one of the following values: "debug", "info", "warn", "error". ## Log level can be set here with one of the following values: "debug", "info", "warn", "error".
## Defaults to "debug". ## Defaults to "debug".
@@ -140,13 +136,6 @@ flags:
# excludeLabelPropagationPrefixes: # excludeLabelPropagationPrefixes:
# - "argocd.argoproj.io/instance" # - "argocd.argoproj.io/instance"
## Workqueue rate limiter configuration.
## By default, controller-runtime uses a combined rate limiter with both a per-item
## exponential backoff and an overall token bucket (10 QPS, 100 bucket size).
## Valid names: "bucket_rate_limiter" (default), "typed_rate_limiter" (per-item only, no global token bucket).
# rateLimiter:
# name: "bucket_rate_limiter"
# Overrides the default `.Release.Namespace` for all resources in this chart. # Overrides the default `.Release.Namespace` for all resources in this chart.
namespaceOverride: "" namespaceOverride: ""
@@ -692,7 +692,7 @@ func (r *AutoscalingListenerReconciler) publishRunningListener(autoscalingListen
} }
// SetupWithManager sets up the controller with the Manager. // SetupWithManager sets up the controller with the Manager.
func (r *AutoscalingListenerReconciler) SetupWithManager(mgr ctrl.Manager, opts ...Option) error { func (r *AutoscalingListenerReconciler) SetupWithManager(mgr ctrl.Manager) error {
labelBasedWatchFunc := func(_ context.Context, obj client.Object) []reconcile.Request { labelBasedWatchFunc := func(_ context.Context, obj client.Object) []reconcile.Request {
var requests []reconcile.Request var requests []reconcile.Request
labels := obj.GetLabels() labels := obj.GetLabels()
@@ -716,16 +716,14 @@ func (r *AutoscalingListenerReconciler) SetupWithManager(mgr ctrl.Manager, opts
return requests return requests
} }
return builderWithOptions( return ctrl.NewControllerManagedBy(mgr).
ctrl.NewControllerManagedBy(mgr). For(&v1alpha1.AutoscalingListener{}).
For(&v1alpha1.AutoscalingListener{}). Owns(&corev1.Pod{}).
Owns(&corev1.Pod{}). Owns(&corev1.ServiceAccount{}).
Owns(&corev1.ServiceAccount{}). Watches(&rbacv1.Role{}, handler.EnqueueRequestsFromMapFunc(labelBasedWatchFunc)).
Watches(&rbacv1.Role{}, handler.EnqueueRequestsFromMapFunc(labelBasedWatchFunc)). Watches(&rbacv1.RoleBinding{}, handler.EnqueueRequestsFromMapFunc(labelBasedWatchFunc)).
Watches(&rbacv1.RoleBinding{}, handler.EnqueueRequestsFromMapFunc(labelBasedWatchFunc)). WithEventFilter(predicate.ResourceVersionChangedPredicate{}).
WithEventFilter(predicate.ResourceVersionChangedPredicate{}), Complete(r)
opts,
).Complete(r)
} }
func listenerContainerStatus(pod *corev1.Pod) *corev1.ContainerStatus { func listenerContainerStatus(pod *corev1.Pod) *corev1.ContainerStatus {
@@ -762,27 +762,25 @@ func (r *AutoscalingRunnerSetReconciler) listEphemeralRunnerSets(ctx context.Con
} }
// SetupWithManager sets up the controller with the Manager. // SetupWithManager sets up the controller with the Manager.
func (r *AutoscalingRunnerSetReconciler) SetupWithManager(mgr ctrl.Manager, opts ...Option) error { func (r *AutoscalingRunnerSetReconciler) SetupWithManager(mgr ctrl.Manager) error {
return builderWithOptions( return ctrl.NewControllerManagedBy(mgr).
ctrl.NewControllerManagedBy(mgr). For(&v1alpha1.AutoscalingRunnerSet{}).
For(&v1alpha1.AutoscalingRunnerSet{}). Owns(&v1alpha1.EphemeralRunnerSet{}).
Owns(&v1alpha1.EphemeralRunnerSet{}). Watches(&v1alpha1.AutoscalingListener{}, handler.EnqueueRequestsFromMapFunc(
Watches(&v1alpha1.AutoscalingListener{}, handler.EnqueueRequestsFromMapFunc( func(_ context.Context, o client.Object) []reconcile.Request {
func(_ context.Context, o client.Object) []reconcile.Request { autoscalingListener := o.(*v1alpha1.AutoscalingListener)
autoscalingListener := o.(*v1alpha1.AutoscalingListener) return []reconcile.Request{
return []reconcile.Request{ {
{ NamespacedName: types.NamespacedName{
NamespacedName: types.NamespacedName{ Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace,
Namespace: autoscalingListener.Spec.AutoscalingRunnerSetNamespace, Name: autoscalingListener.Spec.AutoscalingRunnerSetName,
Name: autoscalingListener.Spec.AutoscalingRunnerSetName,
},
}, },
} },
}, }
)). },
WithEventFilter(predicate.ResourceVersionChangedPredicate{}), )).
opts, WithEventFilter(predicate.ResourceVersionChangedPredicate{}).
).Complete(r) Complete(r)
} }
type autoscalingRunnerSetFinalizerDependencyCleaner struct { type autoscalingRunnerSetFinalizerDependencyCleaner struct {
@@ -522,14 +522,12 @@ func (r *EphemeralRunnerSetReconciler) deleteEphemeralRunnerWithActionsClient(ct
} }
// SetupWithManager sets up the controller with the Manager. // SetupWithManager sets up the controller with the Manager.
func (r *EphemeralRunnerSetReconciler) SetupWithManager(mgr ctrl.Manager, opts ...Option) error { func (r *EphemeralRunnerSetReconciler) SetupWithManager(mgr ctrl.Manager) error {
return builderWithOptions( return ctrl.NewControllerManagedBy(mgr).
ctrl.NewControllerManagedBy(mgr). For(&v1alpha1.EphemeralRunnerSet{}).
For(&v1alpha1.EphemeralRunnerSet{}). Owns(&v1alpha1.EphemeralRunner{}).
Owns(&v1alpha1.EphemeralRunner{}). WithEventFilter(predicate.ResourceVersionChangedPredicate{}).
WithEventFilter(predicate.ResourceVersionChangedPredicate{}), Complete(r)
opts,
).Complete(r)
} }
type ephemeralRunnerStepper struct { type ephemeralRunnerStepper struct {
-21
View File
@@ -1,10 +1,8 @@
package actionsgithubcom package actionsgithubcom
import ( import (
"k8s.io/client-go/util/workqueue"
"sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
) )
// Options is the optional configuration for the controllers, which can be // Options is the optional configuration for the controllers, which can be
@@ -39,25 +37,6 @@ func WithMaxConcurrentReconciles(n int) Option {
} }
} }
// WithTypedRateLimiter sets the rate limiter for the controller's workqueue.
//
// By default, the controller-runtime uses
// workqueue.DefaultTypedControllerRateLimiter[reconcile.Request], which combines
// an exponential backoff per-item limiter with a token bucket overall limiter
// (10 QPS, 100 bucket size). In large-scale environments with many runner
// scale sets, the token bucket limiter can become a bottleneck for
// reconciliation throughput.
//
// Use this option to override the default rate limiter, for example, to use
// workqueue.DefaultTypedItemBasedRateLimiter[reconcile.Request], which removes
// the overall token bucket constraint while keeping the per-item exponential
// backoff.
func WithTypedRateLimiter(rateLimiter workqueue.TypedRateLimiter[reconcile.Request]) Option {
return func(b *controller.Options) {
b.RateLimiter = rateLimiter
}
}
// builderWithOptions applies the given options to the provided builder, if any. // builderWithOptions applies the given options to the provided builder, if any.
// This is a helper function to avoid the need to import the controller-runtime package in every reconciler source file // This is a helper function to avoid the need to import the controller-runtime package in every reconciler source file
// and the command package that creates the controller. // and the command package that creates the controller.
+4 -27
View File
@@ -39,12 +39,10 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme" clientgoscheme "k8s.io/client-go/kubernetes/scheme"
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
"k8s.io/client-go/util/workqueue"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/cache"
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
// +kubebuilder:scaffold:imports // +kubebuilder:scaffold:imports
) )
@@ -85,7 +83,6 @@ func main() {
listenerMetricsEndpoint string listenerMetricsEndpoint string
metricsAddr string metricsAddr string
pprofAddr string
autoScalingRunnerSetOnly bool autoScalingRunnerSetOnly bool
enableLeaderElection bool enableLeaderElection bool
disableAdmissionWebhook bool disableAdmissionWebhook bool
@@ -113,8 +110,6 @@ func main() {
k8sClientRateLimiterQPS int k8sClientRateLimiterQPS int
k8sClientRateLimiterBurst int k8sClientRateLimiterBurst int
workqueueRateLimiter string
) )
var c github.Config var c github.Config
err = envconfig.Process("github", &c) err = envconfig.Process("github", &c)
@@ -126,7 +121,6 @@ func main() {
flag.StringVar(&listenerMetricsAddr, "listener-metrics-addr", ":8080", "The address applied to AutoscalingListener metrics server") flag.StringVar(&listenerMetricsAddr, "listener-metrics-addr", ":8080", "The address applied to AutoscalingListener metrics server")
flag.StringVar(&listenerMetricsEndpoint, "listener-metrics-endpoint", "/metrics", "The AutoscalingListener metrics server endpoint from which the metrics are collected") flag.StringVar(&listenerMetricsEndpoint, "listener-metrics-endpoint", "/metrics", "The AutoscalingListener metrics server endpoint from which the metrics are collected")
flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.")
flag.StringVar(&pprofAddr, "pprof-addr", "", "The address the pprof endpoint binds to.")
flag.BoolVar(&enableLeaderElection, "enable-leader-election", false, flag.BoolVar(&enableLeaderElection, "enable-leader-election", false,
"Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.")
flag.StringVar(&leaderElectionID, "leader-election-id", "actions-runner-controller", "Controller id for leader election.") flag.StringVar(&leaderElectionID, "leader-election-id", "actions-runner-controller", "Controller id for leader election.")
@@ -161,7 +155,6 @@ func main() {
flag.Var(&autoScalerImagePullSecrets, "auto-scaler-image-pull-secrets", "The default image-pull secret name for auto-scaler listener container.") flag.Var(&autoScalerImagePullSecrets, "auto-scaler-image-pull-secrets", "The default image-pull secret name for auto-scaler listener container.")
flag.IntVar(&k8sClientRateLimiterQPS, "k8s-client-rate-limiter-qps", 20, "The QPS value of the K8s client rate limiter.") flag.IntVar(&k8sClientRateLimiterQPS, "k8s-client-rate-limiter-qps", 20, "The QPS value of the K8s client rate limiter.")
flag.IntVar(&k8sClientRateLimiterBurst, "k8s-client-rate-limiter-burst", 30, "The burst value of the K8s client rate limiter.") flag.IntVar(&k8sClientRateLimiterBurst, "k8s-client-rate-limiter-burst", 30, "The burst value of the K8s client rate limiter.")
flag.StringVar(&workqueueRateLimiter, "workqueue-rate-limiter", "", `The workqueue rate limiter to use. Valid values are "bucket_rate_limiter" (default) and "typed_rate_limiter" (per-item only, no global token bucket).`)
flag.Parse() flag.Parse()
runnerPodDefaults.RunnerImagePullSecrets = runnerImagePullSecrets runnerPodDefaults.RunnerImagePullSecrets = runnerImagePullSecrets
@@ -246,7 +239,6 @@ func main() {
SyncPeriod: &syncPeriod, SyncPeriod: &syncPeriod,
DefaultNamespaces: defaultNamespaces, DefaultNamespaces: defaultNamespaces,
}, },
PprofBindAddress: pprofAddr,
WebhookServer: webhookServer, WebhookServer: webhookServer,
LeaderElection: enableLeaderElection, LeaderElection: enableLeaderElection,
LeaderElectionID: leaderElectionID, LeaderElectionID: leaderElectionID,
@@ -301,20 +293,6 @@ func main() {
log.Info("Resource builder initializing") log.Info("Resource builder initializing")
var controllerOpts []actionsgithubcom.Option
switch workqueueRateLimiter {
case "typed_rate_limiter":
log.Info("Using typed rate limiter (per-item only, no global token bucket)")
controllerOpts = append(controllerOpts,
actionsgithubcom.WithTypedRateLimiter(workqueue.DefaultTypedItemBasedRateLimiter[reconcile.Request]()),
)
case "bucket_rate_limiter", "":
log.Info("Using default bucket rate limiter")
default:
log.Error(fmt.Errorf("unknown workqueue rate limiter: %s", workqueueRateLimiter), "invalid --workqueue-rate-limiter value")
os.Exit(1)
}
if err = (&actionsgithubcom.AutoscalingRunnerSetReconciler{ if err = (&actionsgithubcom.AutoscalingRunnerSetReconciler{
Client: mgr.GetClient(), Client: mgr.GetClient(),
Log: log.WithName("AutoscalingRunnerSet").WithValues("version", build.Version), Log: log.WithName("AutoscalingRunnerSet").WithValues("version", build.Version),
@@ -324,18 +302,17 @@ func main() {
UpdateStrategy: actionsgithubcom.UpdateStrategy(updateStrategy), UpdateStrategy: actionsgithubcom.UpdateStrategy(updateStrategy),
DefaultRunnerScaleSetListenerImagePullSecrets: autoScalerImagePullSecrets, DefaultRunnerScaleSetListenerImagePullSecrets: autoScalerImagePullSecrets,
ResourceBuilder: rb, ResourceBuilder: rb,
}).SetupWithManager(mgr, controllerOpts...); err != nil { }).SetupWithManager(mgr); err != nil {
log.Error(err, "unable to create controller", "controller", "AutoscalingRunnerSet") log.Error(err, "unable to create controller", "controller", "AutoscalingRunnerSet")
os.Exit(1) os.Exit(1)
} }
runnerOpts := append(controllerOpts, actionsgithubcom.WithMaxConcurrentReconciles(opts.RunnerMaxConcurrentReconciles))
if err = (&actionsgithubcom.EphemeralRunnerReconciler{ if err = (&actionsgithubcom.EphemeralRunnerReconciler{
Client: mgr.GetClient(), Client: mgr.GetClient(),
Log: log.WithName("EphemeralRunner").WithValues("version", build.Version), Log: log.WithName("EphemeralRunner").WithValues("version", build.Version),
Scheme: mgr.GetScheme(), Scheme: mgr.GetScheme(),
ResourceBuilder: rb, ResourceBuilder: rb,
}).SetupWithManager(mgr, runnerOpts...); err != nil { }).SetupWithManager(mgr, actionsgithubcom.WithMaxConcurrentReconciles(opts.RunnerMaxConcurrentReconciles)); err != nil {
log.Error(err, "unable to create controller", "controller", "EphemeralRunner") log.Error(err, "unable to create controller", "controller", "EphemeralRunner")
os.Exit(1) os.Exit(1)
} }
@@ -346,7 +323,7 @@ func main() {
Scheme: mgr.GetScheme(), Scheme: mgr.GetScheme(),
PublishMetrics: metricsAddr != "0", PublishMetrics: metricsAddr != "0",
ResourceBuilder: rb, ResourceBuilder: rb,
}).SetupWithManager(mgr, controllerOpts...); err != nil { }).SetupWithManager(mgr); err != nil {
log.Error(err, "unable to create controller", "controller", "EphemeralRunnerSet") log.Error(err, "unable to create controller", "controller", "EphemeralRunnerSet")
os.Exit(1) os.Exit(1)
} }
@@ -358,7 +335,7 @@ func main() {
ListenerMetricsAddr: listenerMetricsAddr, ListenerMetricsAddr: listenerMetricsAddr,
ListenerMetricsEndpoint: listenerMetricsEndpoint, ListenerMetricsEndpoint: listenerMetricsEndpoint,
ResourceBuilder: rb, ResourceBuilder: rb,
}).SetupWithManager(mgr, controllerOpts...); err != nil { }).SetupWithManager(mgr); err != nil {
log.Error(err, "unable to create controller", "controller", "AutoscalingListener") log.Error(err, "unable to create controller", "controller", "AutoscalingListener")
os.Exit(1) os.Exit(1)
} }
+1 -1
View File
@@ -6,7 +6,7 @@ DIND_ROOTLESS_RUNNER_NAME ?= ${DOCKER_USER}/actions-runner-dind-rootless
OS_IMAGE ?= ubuntu-22.04 OS_IMAGE ?= ubuntu-22.04
TARGETPLATFORM ?= $(shell arch) TARGETPLATFORM ?= $(shell arch)
RUNNER_VERSION ?= 2.334.0 RUNNER_VERSION ?= 2.333.1
RUNNER_CONTAINER_HOOKS_VERSION ?= 0.8.1 RUNNER_CONTAINER_HOOKS_VERSION ?= 0.8.1
DOCKER_VERSION ?= 28.0.4 DOCKER_VERSION ?= 28.0.4
+1 -1
View File
@@ -1,2 +1,2 @@
RUNNER_VERSION=2.334.0 RUNNER_VERSION=2.333.1
RUNNER_CONTAINER_HOOKS_VERSION=0.8.1 RUNNER_CONTAINER_HOOKS_VERSION=0.8.1
+1 -1
View File
@@ -36,7 +36,7 @@ var (
testResultCMNamePrefix = "test-result-" testResultCMNamePrefix = "test-result-"
RunnerVersion = "2.334.0" RunnerVersion = "2.333.1"
RunnerContainerHooksVersion = "0.8.1" RunnerContainerHooksVersion = "0.8.1"
) )