Manually bump dependencies since it needs fixes related to the controller runtime API (#4406)

This commit is contained in:
Nikola Jokic
2026-03-16 10:09:36 +01:00
committed by GitHub
parent aa031d3902
commit 276717a04b
39 changed files with 1452 additions and 363 deletions
@@ -27,12 +27,12 @@ import (
"time"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/events"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
"github.com/go-logr/logr"
gogithub "github.com/google/go-github/v52/github"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -55,7 +55,7 @@ const (
type HorizontalRunnerAutoscalerGitHubWebhook struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
// SecretKeyBytes is the byte representation of the Webhook secret token
@@ -361,7 +361,6 @@ type ScaleTarget struct {
func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) getJobScaleUpTargetForRepoOrOrg(
ctx context.Context, log logr.Logger, repo, owner, ownerType, enterprise string, labels []string,
) (*ScaleTarget, error) {
scaleTarget := func(value string) (*ScaleTarget, error) {
return autoscaler.getJobScaleTarget(ctx, value, labels)
}
@@ -369,8 +368,8 @@ func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) getJobScaleUpTargetFo
}
func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) getScaleUpTargetWithFunction(
ctx context.Context, log logr.Logger, repo, owner, ownerType, enterprise string, scaleTarget func(value string) (*ScaleTarget, error)) (*ScaleTarget, error) {
ctx context.Context, log logr.Logger, repo, owner, ownerType, enterprise string, scaleTarget func(value string) (*ScaleTarget, error),
) (*ScaleTarget, error) {
repositoryRunnerKey := owner + "/" + repo
// Search for repository HRAs
@@ -698,7 +697,7 @@ func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) SetupWithManager(mgr
name = autoscaler.Name
}
autoscaler.Recorder = mgr.GetEventRecorderFor(name)
autoscaler.Recorder = mgr.GetEventRecorder(name)
if err := mgr.GetFieldIndexer().IndexField(context.TODO(), &v1alpha1.HorizontalRunnerAutoscaler{}, scaleTargetKey, autoscaler.indexer); err != nil {
return err
@@ -23,13 +23,13 @@ import (
"time"
corev1 "k8s.io/api/core/v1"
"k8s.io/client-go/tools/events"
"github.com/go-logr/logr"
kerrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -49,7 +49,7 @@ type HorizontalRunnerAutoscalerReconciler struct {
client.Client
GitHubClient *MultiGitHubClient
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
DefaultScaleDownDelay time.Duration
Name string
@@ -318,7 +318,14 @@ func (r *HorizontalRunnerAutoscalerReconciler) reconcile(ctx context.Context, re
newDesiredReplicas, err := r.computeReplicasWithCache(ghc, log, now, st, hra, minReplicas)
if err != nil {
r.Recorder.Event(&hra, corev1.EventTypeNormal, "RunnerAutoscalingFailure", err.Error())
r.Recorder.Eventf(
&hra,
nil,
corev1.EventTypeNormal,
"RunnerAutoscalingFailure",
"",
err.Error(),
)
log.Error(err, "Could not compute replicas")
@@ -381,7 +388,7 @@ func (r *HorizontalRunnerAutoscalerReconciler) SetupWithManager(mgr ctrl.Manager
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
return ctrl.NewControllerManagedBy(mgr).
For(&v1alpha1.HorizontalRunnerAutoscaler{}).
@@ -514,7 +521,6 @@ func (r *HorizontalRunnerAutoscalerReconciler) computeReplicasWithCache(ghc *arc
if hra.Status.DesiredReplicas == nil ||
*hra.Status.DesiredReplicas < newDesiredReplicas ||
hra.Status.LastSuccessfulScaleOutTime == nil {
} else if hra.Status.LastSuccessfulScaleOutTime != nil {
t := hra.Status.LastSuccessfulScaleOutTime.Add(scaleDownDelay)
@@ -111,7 +111,7 @@ func SetupIntegrationTest(ctx2 context.Context) *testEnvironment {
Client: mgr.GetClient(),
Scheme: scheme.Scheme,
Log: logf.Log,
Recorder: mgr.GetEventRecorderFor("runnerreplicaset-controller"),
Recorder: mgr.GetEventRecorder("runnerreplicaset-controller"),
GitHubClient: multiClient,
Name: controllerName("runner"),
RegistrationRecheckInterval: time.Millisecond * 100,
@@ -129,7 +129,7 @@ func SetupIntegrationTest(ctx2 context.Context) *testEnvironment {
Client: mgr.GetClient(),
Scheme: scheme.Scheme,
Log: logf.Log,
Recorder: mgr.GetEventRecorderFor("runnerreplicaset-controller"),
Recorder: mgr.GetEventRecorder("runnerreplicaset-controller"),
Name: controllerName("runnerreplicaset"),
}
err = replicasetController.SetupWithManager(mgr)
@@ -139,7 +139,7 @@ func SetupIntegrationTest(ctx2 context.Context) *testEnvironment {
Client: mgr.GetClient(),
Scheme: scheme.Scheme,
Log: logf.Log,
Recorder: mgr.GetEventRecorderFor("runnerdeployment-controller"),
Recorder: mgr.GetEventRecorder("runnerdeployment-controller"),
Name: controllerName("runnnerdeployment"),
}
err = deploymentsController.SetupWithManager(mgr)
@@ -150,7 +150,7 @@ func SetupIntegrationTest(ctx2 context.Context) *testEnvironment {
Scheme: scheme.Scheme,
Log: logf.Log,
GitHubClient: multiClient,
Recorder: mgr.GetEventRecorderFor("horizontalrunnerautoscaler-controller"),
Recorder: mgr.GetEventRecorder("horizontalrunnerautoscaler-controller"),
Name: controllerName("horizontalrunnerautoscaler"),
}
err = autoscalerController.SetupWithManager(mgr)
@@ -160,7 +160,7 @@ func SetupIntegrationTest(ctx2 context.Context) *testEnvironment {
Client: mgr.GetClient(),
Scheme: scheme.Scheme,
Log: logf.Log,
Recorder: mgr.GetEventRecorderFor("horizontalrunnerautoscaler-controller"),
Recorder: mgr.GetEventRecorder("horizontalrunnerautoscaler-controller"),
Name: controllerName("horizontalrunnerautoscalergithubwebhook"),
Namespace: ns.Name,
}
@@ -22,7 +22,7 @@ import (
"github.com/go-logr/logr"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/events"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -33,7 +33,7 @@ import (
type RunnerPersistentVolumeClaimReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
Name string
}
@@ -65,7 +65,7 @@ func (r *RunnerPersistentVolumeClaimReconciler) SetupWithManager(mgr ctrl.Manage
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
return ctrl.NewControllerManagedBy(mgr).
For(&corev1.PersistentVolumeClaim{}).
@@ -22,7 +22,7 @@ import (
"github.com/go-logr/logr"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/events"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -33,7 +33,7 @@ import (
type RunnerPersistentVolumeReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
Name string
}
@@ -63,7 +63,7 @@ func (r *RunnerPersistentVolumeReconciler) SetupWithManager(mgr ctrl.Manager) er
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
return ctrl.NewControllerManagedBy(mgr).
For(&corev1.PersistentVolume{}).
@@ -10,7 +10,7 @@ import (
"gomodules.xyz/jsonpatch/v2"
admissionv1 "k8s.io/api/admission/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/events"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
@@ -27,7 +27,7 @@ type PodRunnerTokenInjector struct {
Name string
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
GitHubClient *MultiGitHubClient
decoder admission.Decoder
}
@@ -126,7 +126,7 @@ func (r *PodRunnerTokenInjector) SetupWithManager(mgr ctrl.Manager) error {
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
mgr.GetWebhookServer().Register("/mutate-runner-set-pod", &admission.Webhook{Handler: r})
@@ -26,6 +26,7 @@ import (
"time"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/client-go/tools/events"
"github.com/actions/actions-runner-controller/build"
"github.com/actions/actions-runner-controller/hash"
@@ -33,7 +34,6 @@ import (
kerrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
@@ -66,7 +66,7 @@ const (
type RunnerReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
GitHubClient *MultiGitHubClient
Name string
@@ -408,7 +408,14 @@ func (r *RunnerReconciler) processRunnerCreation(ctx context.Context, runner v1a
return ctrl.Result{}, err
}
r.Recorder.Event(&runner, corev1.EventTypeNormal, "PodCreated", fmt.Sprintf("Created pod '%s'", newPod.Name))
r.Recorder.Eventf(
&runner,
nil,
corev1.EventTypeNormal,
"PodCreated",
"",
fmt.Sprintf("Created pod '%s'", newPod.Name),
)
log.Info("Created runner pod", "repository", runner.Spec.Repository)
return ctrl.Result{}, nil
@@ -423,14 +430,28 @@ func (r *RunnerReconciler) createObject(ctx context.Context, obj client.Object,
if err := r.Create(ctx, obj); err != nil {
if kerrors.IsAlreadyExists(err) {
log.Info(fmt.Sprintf("Failed to create %s %s as it already exists. Reusing existing %s", kind, meta.Name, kind))
r.Recorder.Event(runner, corev1.EventTypeNormal, fmt.Sprintf("%sReused", kind), fmt.Sprintf("Reused %s '%s'", kind, meta.Name))
r.Recorder.Eventf(
runner,
nil,
corev1.EventTypeNormal,
fmt.Sprintf("%sReused", kind),
"",
fmt.Sprintf("Reused %s '%s'", kind, meta.Name),
)
return nil
}
log.Error(err, fmt.Sprintf("Retrying as failed to create %s %s resource", kind, meta.Name))
return &ctrl.Result{Requeue: true}
}
r.Recorder.Event(runner, corev1.EventTypeNormal, fmt.Sprintf("%sCreated", kind), fmt.Sprintf("Created %s '%s'", kind, meta.Name))
r.Recorder.Eventf(
runner,
nil,
corev1.EventTypeNormal,
fmt.Sprintf("%sCreated", kind),
"",
fmt.Sprintf("Created %s '%s'", kind, meta.Name),
)
log.Info(fmt.Sprintf("Created %s", kind), "name", meta.Name)
return nil
}
@@ -453,7 +474,14 @@ func (r *RunnerReconciler) updateRegistrationToken(ctx context.Context, runner v
// POST https://api.github.com/enterprises/YOUR_ENTERPRISE/actions/runners/registration-token: 403 Resource not accessible by integration []
// In such case retrying in seconds might not make much sense.
r.Recorder.Event(&runner, corev1.EventTypeWarning, "FailedUpdateRegistrationToken", "Updating registration token failed")
r.Recorder.Eventf(
&runner,
nil,
corev1.EventTypeWarning,
"FailedUpdateRegistrationToken",
"",
"Updating registration token failed",
)
log.Error(err, "Failed to get new registration token")
return false, err
}
@@ -472,7 +500,14 @@ func (r *RunnerReconciler) updateRegistrationToken(ctx context.Context, runner v
return false, err
}
r.Recorder.Event(&runner, corev1.EventTypeNormal, "RegistrationTokenUpdated", "Successfully update registration token")
r.Recorder.Eventf(
&runner,
nil,
corev1.EventTypeNormal,
"RegistrationTokenUpdated",
"",
"Successfully update registration token",
)
log.Info("Updated registration token", "repository", runner.Spec.Repository)
return true, nil
@@ -818,7 +853,6 @@ func newRunnerPodWithContainerMode(containerMode string, template corev1.Pod, ru
if runnerSpec.DockerVarRunVolumeSizeLimit == nil {
runnerSpec.DockerVarRunVolumeSizeLimit = resource.NewScaledQuantity(1, resource.Mega)
}
// Be aware some of the environment variables are used
@@ -1290,7 +1324,7 @@ func (r *RunnerReconciler) SetupWithManager(mgr ctrl.Manager) error {
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
return ctrl.NewControllerManagedBy(mgr).
For(&v1alpha1.Runner{}).
@@ -28,7 +28,7 @@ import (
kerrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/events"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,7 +41,7 @@ import (
type RunnerPodReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
GitHubClient *MultiGitHubClient
Name string
@@ -216,7 +216,14 @@ func (r *RunnerPodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
return ctrl.Result{Requeue: true}, nil
}
r.Recorder.Event(&runnerPod, corev1.EventTypeNormal, "PodDeleted", fmt.Sprintf("Forcefully deleted pod '%s'", runnerPod.Name))
r.Recorder.Eventf(
&runnerPod,
nil,
corev1.EventTypeNormal,
"PodDeleted",
"",
fmt.Sprintf("Forcefully deleted pod '%s'", runnerPod.Name),
)
log.Info("Forcefully deleted runner pod", "repository", repo)
// give kube manager a little time to forcefully delete the stuck pod
return ctrl.Result{RequeueAfter: 3 * time.Second}, nil
@@ -272,7 +279,7 @@ func (r *RunnerPodReconciler) SetupWithManager(mgr ctrl.Manager) error {
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
return ctrl.NewControllerManagedBy(mgr).
For(&corev1.Pod{}).
@@ -25,12 +25,12 @@ import (
"time"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/events"
"github.com/davecgh/go-spew/spew"
"github.com/go-logr/logr"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -52,7 +52,7 @@ const (
type RunnerDeploymentReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
CommonRunnerLabels []string
Name string
@@ -104,7 +104,7 @@ func (r *RunnerDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req
desiredRS, err := r.newRunnerReplicaSet(rd)
if err != nil {
r.Recorder.Event(&rd, corev1.EventTypeNormal, "RunnerAutoscalingFailure", err.Error())
r.Recorder.Eventf(&rd, nil, corev1.EventTypeNormal, "RunnerAutoscalingFailure", "", err.Error())
log.Error(err, "Could not create runnerreplicaset")
@@ -274,7 +274,14 @@ func (r *RunnerDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req
return ctrl.Result{}, err
}
r.Recorder.Event(&rd, corev1.EventTypeNormal, "RunnerReplicaSetDeleted", fmt.Sprintf("Deleted runnerreplicaset '%s'", rs.Name))
r.Recorder.Eventf(
&rd,
&rs,
corev1.EventTypeNormal,
"RunnerReplicaSetDeleted",
"",
fmt.Sprintf("Deleted runnerreplicaset '%s'", rs.Name),
)
rslog.Info("Deleted runnerreplicaset")
}
@@ -482,7 +489,7 @@ func (r *RunnerDeploymentReconciler) SetupWithManager(mgr ctrl.Manager) error {
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
if err := mgr.GetFieldIndexer().IndexField(context.TODO(), &v1alpha1.RunnerReplicaSet{}, runnerSetOwnerKey, func(rawObj client.Object) []string {
runnerSet := rawObj.(*v1alpha1.RunnerReplicaSet)
@@ -160,7 +160,7 @@ func SetupDeploymentTest(ctx2 context.Context) *corev1.Namespace {
Client: mgr.GetClient(),
Scheme: scheme.Scheme,
Log: logf.Log,
Recorder: mgr.GetEventRecorderFor("runnerreplicaset-controller"),
Recorder: mgr.GetEventRecorder("runnerreplicaset-controller"),
Name: "runnerdeployment-" + ns.Name,
}
err = controller.SetupWithManager(mgr)
@@ -25,7 +25,7 @@ import (
kerrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/events"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -38,7 +38,7 @@ import (
type RunnerReplicaSetReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
Name string
}
@@ -195,7 +195,7 @@ func (r *RunnerReplicaSetReconciler) SetupWithManager(mgr ctrl.Manager) error {
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
return ctrl.NewControllerManagedBy(mgr).
For(&v1alpha1.RunnerReplicaSet{}).
@@ -66,7 +66,7 @@ func SetupTest(ctx2 context.Context) *corev1.Namespace {
Client: mgr.GetClient(),
Scheme: scheme.Scheme,
Log: logf.Log,
Recorder: mgr.GetEventRecorderFor("runnerreplicaset-controller"),
Recorder: mgr.GetEventRecorder("runnerreplicaset-controller"),
Name: "runnerreplicaset-" + ns.Name,
}
err = controller.SetupWithManager(mgr)
@@ -22,9 +22,9 @@ import (
"time"
appsv1 "k8s.io/api/apps/v1"
"k8s.io/client-go/tools/events"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -42,7 +42,7 @@ type RunnerSetReconciler struct {
client.Client
Log logr.Logger
Recorder record.EventRecorder
Recorder events.EventRecorder
Scheme *runtime.Scheme
CommonRunnerLabels []string
@@ -69,7 +69,6 @@ func (r *RunnerSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
runnerSet := &v1alpha1.RunnerSet{}
if err := r.Get(ctx, req.NamespacedName, runnerSet); err != nil {
err = client.IgnoreNotFound(err)
if err != nil {
log.Error(err, "Could not get RunnerSet")
}
@@ -99,7 +98,14 @@ func (r *RunnerSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
desiredStatefulSet, err := r.newStatefulSet(ctx, runnerSet)
if err != nil {
r.Recorder.Event(runnerSet, corev1.EventTypeNormal, "RunnerAutoscalingFailure", err.Error())
r.Recorder.Eventf(
runnerSet,
nil,
corev1.EventTypeNormal,
"RunnerAutoscalingFailure",
"",
err.Error(),
)
log.Error(err, "Could not create statefulset")
@@ -182,8 +188,10 @@ func getRunnerSetSelector(runnerSet *v1alpha1.RunnerSet) *metav1.LabelSelector {
return selector
}
var LabelKeyPodMutation = "actions-runner-controller/inject-registration-token"
var LabelValuePodMutation = "true"
var (
LabelKeyPodMutation = "actions-runner-controller/inject-registration-token"
LabelValuePodMutation = "true"
)
func (r *RunnerSetReconciler) newStatefulSet(ctx context.Context, runnerSet *v1alpha1.RunnerSet) (*appsv1.StatefulSet, error) {
runnerSetWithOverrides := *runnerSet.Spec.DeepCopy()
@@ -280,7 +288,7 @@ func (r *RunnerSetReconciler) SetupWithManager(mgr ctrl.Manager) error {
name = r.Name
}
r.Recorder = mgr.GetEventRecorderFor(name)
r.Recorder = mgr.GetEventRecorder(name)
if err := mgr.GetFieldIndexer().IndexField(context.TODO(), &appsv1.StatefulSet{}, runnerSetOwnerKey, func(rawObj client.Object) []string {
set := rawObj.(*appsv1.StatefulSet)