diff --git a/apis/actions.github.com/v1alpha1/ephemeralrunner_types.go b/apis/actions.github.com/v1alpha1/ephemeralrunner_types.go index 28d6545c..56c7e7b4 100644 --- a/apis/actions.github.com/v1alpha1/ephemeralrunner_types.go +++ b/apis/actions.github.com/v1alpha1/ephemeralrunner_types.go @@ -48,7 +48,7 @@ type EphemeralRunner struct { } func (er *EphemeralRunner) IsDone() bool { - return er.Status.Phase == corev1.PodSucceeded || er.Status.Phase == corev1.PodFailed + return er.Status.Phase == EphemeralRunnerSucceeded || er.Status.Phase == EphemeralRunnerFailed } func (er *EphemeralRunner) HasJob() bool { @@ -125,6 +125,40 @@ type EphemeralRunnerSpec struct { corev1.PodTemplateSpec `json:",inline"` } +// EphemeralRunnerPhase is a label for the condition of an EphemeralRunner at the current time. +// +kubebuilder:validation:Enum=Pending;Running;Restarting;Succeeded;Failed;Aborted +type EphemeralRunnerPhase string + +const ( + // EphemeralRunnerPending is the stage where the ephemeral runner is about to start. + EphemeralRunnerPending EphemeralRunnerPhase = "Pending" + // EphemeralRunnerRunning is the stage where the ephemeral runner is running and ready to accept the job. + EphemeralRunnerRunning EphemeralRunnerPhase = "Running" + // EphemeralRunnerRestarting is the stage where the ephemeral runner pod stopped, so the ephemeral runner should restart it + EphemeralRunnerRestarting EphemeralRunnerPhase = "Restarting" + // EphemeralRunnerSucceeded is the stage where the ephemeral runner finished running and exited with exit code 0. + EphemeralRunnerSucceeded EphemeralRunnerPhase = "Succeeded" + // EphemeralRunnerFailed means that the ephemeral runner finished running and exited with a non-zero exit code. + EphemeralRunnerFailed EphemeralRunnerPhase = "Failed" + // EphemeralRunnerAborted means that the ephemeral runner failed to start due to unrecoverable failure, and will be left as is for manual inspection. + EphemeralRunnerAborted EphemeralRunnerPhase = "Aborted" +) + +func EphemeralRunnerPhaseFromPodPhase(podPhase corev1.PodPhase) EphemeralRunnerPhase { + switch podPhase { + case corev1.PodPending: + return EphemeralRunnerPending + case corev1.PodRunning: + return EphemeralRunnerRunning + case corev1.PodSucceeded: + return EphemeralRunnerSucceeded + case corev1.PodFailed: + return EphemeralRunnerFailed + default: + return EphemeralRunnerPending + } +} + // EphemeralRunnerStatus defines the observed state of EphemeralRunner type EphemeralRunnerStatus struct { // Turns true only if the runner is online. @@ -140,7 +174,7 @@ type EphemeralRunnerStatus struct { // The PodSucceded phase should be set only when confirmed that EphemeralRunner // actually executed the job and has been removed from the service. // +optional - Phase corev1.PodPhase `json:"phase,omitempty"` + Phase EphemeralRunnerPhase `json:"phase,omitempty"` // +optional Reason string `json:"reason,omitempty"` // +optional diff --git a/charts/gha-runner-scale-set-controller/crds/actions.github.com_ephemeralrunners.yaml b/charts/gha-runner-scale-set-controller/crds/actions.github.com_ephemeralrunners.yaml index f40bc35b..a73bf1f3 100644 --- a/charts/gha-runner-scale-set-controller/crds/actions.github.com_ephemeralrunners.yaml +++ b/charts/gha-runner-scale-set-controller/crds/actions.github.com_ephemeralrunners.yaml @@ -8257,6 +8257,13 @@ spec: The PodSucceded phase should be set only when confirmed that EphemeralRunner actually executed the job and has been removed from the service. + enum: + - Pending + - Running + - Restarting + - Succeeded + - Failed + - Aborted type: string ready: description: Turns true only if the runner is online. diff --git a/config/crd/bases/actions.github.com_ephemeralrunners.yaml b/config/crd/bases/actions.github.com_ephemeralrunners.yaml index f40bc35b..a73bf1f3 100644 --- a/config/crd/bases/actions.github.com_ephemeralrunners.yaml +++ b/config/crd/bases/actions.github.com_ephemeralrunners.yaml @@ -8257,6 +8257,13 @@ spec: The PodSucceded phase should be set only when confirmed that EphemeralRunner actually executed the job and has been removed from the service. + enum: + - Pending + - Running + - Restarting + - Succeeded + - Failed + - Aborted type: string ready: description: Turns true only if the runner is online. diff --git a/controllers/actions.github.com/ephemeralrunner_controller.go b/controllers/actions.github.com/ephemeralrunner_controller.go index d33d381e..db45208b 100644 --- a/controllers/actions.github.com/ephemeralrunner_controller.go +++ b/controllers/actions.github.com/ephemeralrunner_controller.go @@ -285,7 +285,7 @@ func (r *EphemeralRunnerReconciler) Reconcile(ctx context.Context, req ctrl.Requ case kerrors.IsInvalid(err) || kerrors.IsForbidden(err): log.Error(err, "Failed to create a pod due to unrecoverable failure") errMessage := fmt.Sprintf("Failed to create the pod: %v", err) - if err := r.markAsFailed(ctx, ephemeralRunner, errMessage, ReasonInvalidPodFailure, log); err != nil { + if err := r.markAsAborted(ctx, ephemeralRunner, errMessage, ReasonInvalidPodFailure, log); err != nil { log.Error(err, "Failed to set ephemeral runner to phase Failed") return ctrl.Result{}, err } @@ -511,10 +511,12 @@ func (r *EphemeralRunnerReconciler) cleanupRunnerLinkedSecrets(ctx context.Conte return errors.Join(errs...) } -func (r *EphemeralRunnerReconciler) markAsFailed(ctx context.Context, ephemeralRunner *v1alpha1.EphemeralRunner, errMessage string, reason string, log logr.Logger) error { +// markAsAborted updates the ephemeral runner status to aborted and stops the reconciliation. +// This runner is left in aborted state and won't be deleted until someone manually does that. +func (r *EphemeralRunnerReconciler) markAsAborted(ctx context.Context, ephemeralRunner *v1alpha1.EphemeralRunner, errMessage string, reason string, log logr.Logger) error { log.Info("Updating ephemeral runner status to Failed") if err := patchSubResource(ctx, r.Status(), ephemeralRunner, func(obj *v1alpha1.EphemeralRunner) { - obj.Status.Phase = corev1.PodFailed + obj.Status.Phase = v1alpha1.EphemeralRunnerAborted obj.Status.Reason = reason obj.Status.Message = errMessage }); err != nil { @@ -545,6 +547,7 @@ func (r *EphemeralRunnerReconciler) deletePodAsFailed(ctx context.Context, ephem if obj.Status.Failures == nil { obj.Status.Failures = make(map[string]metav1.Time) } + obj.Status.Phase = v1alpha1.EphemeralRunnerRestarting obj.Status.Failures[string(pod.UID)] = metav1.Now() obj.Status.Ready = false obj.Status.Reason = pod.Status.Reason @@ -734,7 +737,8 @@ func (r *EphemeralRunnerReconciler) updateRunStatusFromPod(ctx context.Context, } } - phaseChanged := ephemeralRunner.Status.Phase != pod.Status.Phase + newPhase := v1alpha1.EphemeralRunnerPhaseFromPodPhase(pod.Status.Phase) + phaseChanged := ephemeralRunner.Status.Phase != newPhase readyChanged := ready != ephemeralRunner.Status.Ready if !phaseChanged && !readyChanged { @@ -749,7 +753,7 @@ func (r *EphemeralRunnerReconciler) updateRunStatusFromPod(ctx context.Context, "ready", ready, ) err := patchSubResource(ctx, r.Status(), ephemeralRunner, func(obj *v1alpha1.EphemeralRunner) { - obj.Status.Phase = pod.Status.Phase + obj.Status.Phase = newPhase obj.Status.Ready = ready obj.Status.Reason = pod.Status.Reason obj.Status.Message = pod.Status.Message diff --git a/controllers/actions.github.com/ephemeralrunner_controller_test.go b/controllers/actions.github.com/ephemeralrunner_controller_test.go index a19f272f..0f0cc9d8 100644 --- a/controllers/actions.github.com/ephemeralrunner_controller_test.go +++ b/controllers/actions.github.com/ephemeralrunner_controller_test.go @@ -270,7 +270,7 @@ var _ = Describe("EphemeralRunner", func() { updated := new(v1alpha1.EphemeralRunner) Eventually( - func() (corev1.PodPhase, error) { + func() (v1alpha1.EphemeralRunnerPhase, error) { err := k8sClient.Get( ctx, client.ObjectKey{Name: invalideEphemeralRunner.Name, Namespace: invalideEphemeralRunner.Namespace}, @@ -283,7 +283,7 @@ var _ = Describe("EphemeralRunner", func() { }, ephemeralRunnerTimeout, ephemeralRunnerInterval, - ).Should(BeEquivalentTo(corev1.PodFailed)) + ).Should(BeEquivalentTo(v1alpha1.EphemeralRunnerAborted)) Expect(updated.Status.Reason).Should(Equal("InvalidPod")) Expect(updated.Status.Message).Should(Equal("Failed to create the pod: pods \"invalid-ephemeral-runner\" is forbidden: no PriorityClass with name notexist was found")) @@ -470,7 +470,7 @@ var _ = Describe("EphemeralRunner", func() { var updated *v1alpha1.EphemeralRunner Eventually( - func() (corev1.PodPhase, error) { + func() (v1alpha1.EphemeralRunnerPhase, error) { updated = new(v1alpha1.EphemeralRunner) err := k8sClient.Get(ctx, client.ObjectKey{Name: ephemeralRunner.Name, Namespace: ephemeralRunner.Namespace}, updated) if err != nil { @@ -480,7 +480,7 @@ var _ = Describe("EphemeralRunner", func() { }, ephemeralRunnerTimeout, ephemeralRunnerInterval, - ).Should(BeEquivalentTo(phase)) + ).Should(BeEquivalentTo(v1alpha1.EphemeralRunnerPhase(phase))) } }) @@ -592,10 +592,10 @@ var _ = Describe("EphemeralRunner", func() { Expect(err).To(BeNil(), "failed to patch pod status") Consistently( - func() (corev1.PodPhase, error) { + func() (v1alpha1.EphemeralRunnerPhase, error) { updated := new(v1alpha1.EphemeralRunner) if err := k8sClient.Get(ctx, client.ObjectKey{Name: ephemeralRunner.Name, Namespace: ephemeralRunner.Namespace}, updated); err != nil { - return corev1.PodUnknown, err + return "", err } return updated.Status.Phase, nil }, @@ -772,7 +772,7 @@ var _ = Describe("EphemeralRunner", func() { Expect(err).To(BeNil()) Eventually( - func() (corev1.PodPhase, error) { + func() (v1alpha1.EphemeralRunnerPhase, error) { updated := new(v1alpha1.EphemeralRunner) if err := k8sClient.Get(ctx, client.ObjectKey{Name: ephemeralRunner.Name, Namespace: ephemeralRunner.Namespace}, updated); err != nil { return "", err @@ -781,7 +781,7 @@ var _ = Describe("EphemeralRunner", func() { }, ephemeralRunnerTimeout, ephemeralRunnerInterval, - ).Should(BeEquivalentTo(corev1.PodRunning)) + ).Should(BeEquivalentTo(v1alpha1.EphemeralRunnerRunning)) // set phase to succeeded pod.Status.Phase = corev1.PodSucceeded @@ -789,7 +789,7 @@ var _ = Describe("EphemeralRunner", func() { Expect(err).To(BeNil()) Consistently( - func() (corev1.PodPhase, error) { + func() (v1alpha1.EphemeralRunnerPhase, error) { updated := new(v1alpha1.EphemeralRunner) if err := k8sClient.Get(ctx, client.ObjectKey{Name: ephemeralRunner.Name, Namespace: ephemeralRunner.Namespace}, updated); err != nil { return "", err @@ -797,7 +797,7 @@ var _ = Describe("EphemeralRunner", func() { return updated.Status.Phase, nil }, ephemeralRunnerTimeout, - ).Should(BeEquivalentTo(corev1.PodRunning)) + ).Should(BeEquivalentTo(v1alpha1.EphemeralRunnerRunning)) }) }) diff --git a/controllers/actions.github.com/ephemeralrunnerset_controller.go b/controllers/actions.github.com/ephemeralrunnerset_controller.go index 22730c96..99552547 100644 --- a/controllers/actions.github.com/ephemeralrunnerset_controller.go +++ b/controllers/actions.github.com/ephemeralrunnerset_controller.go @@ -162,7 +162,7 @@ func (r *EphemeralRunnerSetReconciler) Reconcile(ctx context.Context, req ctrl.R "pending", len(ephemeralRunnerState.pending), "running", len(ephemeralRunnerState.running), "finished", len(ephemeralRunnerState.finished), - "failed", len(ephemeralRunnerState.failed), + "failed", len(ephemeralRunnerState.aborted), "deleting", len(ephemeralRunnerState.deleting), ) @@ -185,7 +185,7 @@ func (r *EphemeralRunnerSetReconciler) Reconcile(ctx context.Context, req ctrl.R }, len(ephemeralRunnerState.pending), len(ephemeralRunnerState.running), - len(ephemeralRunnerState.failed), + len(ephemeralRunnerState.aborted), ) } @@ -232,7 +232,7 @@ func (r *EphemeralRunnerSetReconciler) Reconcile(ctx context.Context, req ctrl.R CurrentReplicas: total, PendingEphemeralRunners: len(ephemeralRunnerState.pending), RunningEphemeralRunners: len(ephemeralRunnerState.running), - FailedEphemeralRunners: len(ephemeralRunnerState.failed), + FailedEphemeralRunners: len(ephemeralRunnerState.aborted), } // Update the status if needed. @@ -307,13 +307,13 @@ func (r *EphemeralRunnerSetReconciler) cleanUpEphemeralRunners(ctx context.Conte "pending", len(ephemeralRunnerState.pending), "running", len(ephemeralRunnerState.running), "finished", len(ephemeralRunnerState.finished), - "failed", len(ephemeralRunnerState.failed), + "failed", len(ephemeralRunnerState.aborted), "deleting", len(ephemeralRunnerState.deleting), ) log.Info("Cleanup finished or failed ephemeral runners") var errs []error - for _, ephemeralRunner := range append(ephemeralRunnerState.finished, ephemeralRunnerState.failed...) { + for _, ephemeralRunner := range append(ephemeralRunnerState.finished, ephemeralRunnerState.aborted...) { log.Info("Deleting ephemeral runner", "name", ephemeralRunner.Name) if err := r.Delete(ctx, ephemeralRunner); err != nil && !kerrors.IsNotFound(err) { errs = append(errs, err) @@ -564,7 +564,7 @@ type ephemeralRunnerState struct { pending []*v1alpha1.EphemeralRunner running []*v1alpha1.EphemeralRunner finished []*v1alpha1.EphemeralRunner - failed []*v1alpha1.EphemeralRunner + aborted []*v1alpha1.EphemeralRunner deleting []*v1alpha1.EphemeralRunner latestPatchID int @@ -585,12 +585,12 @@ func newEphemeralRunnerState(ephemeralRunnerList *v1alpha1.EphemeralRunnerList) } switch r.Status.Phase { - case corev1.PodRunning: + case v1alpha1.EphemeralRunnerRunning: ephemeralRunnerState.running = append(ephemeralRunnerState.running, r) - case corev1.PodSucceeded: + case v1alpha1.EphemeralRunnerSucceeded, v1alpha1.EphemeralRunnerFailed: ephemeralRunnerState.finished = append(ephemeralRunnerState.finished, r) - case corev1.PodFailed: - ephemeralRunnerState.failed = append(ephemeralRunnerState.failed, r) + case v1alpha1.EphemeralRunnerAborted: + ephemeralRunnerState.aborted = append(ephemeralRunnerState.aborted, r) default: // Pending or no phase should be considered as pending. // @@ -603,5 +603,5 @@ func newEphemeralRunnerState(ephemeralRunnerList *v1alpha1.EphemeralRunnerList) } func (s *ephemeralRunnerState) scaleTotal() int { - return len(s.pending) + len(s.running) + len(s.failed) + return len(s.pending) + len(s.running) + len(s.aborted) } diff --git a/controllers/actions.github.com/ephemeralrunnerset_controller_test.go b/controllers/actions.github.com/ephemeralrunnerset_controller_test.go index a23d537a..bb037861 100644 --- a/controllers/actions.github.com/ephemeralrunnerset_controller_test.go +++ b/controllers/actions.github.com/ephemeralrunnerset_controller_test.go @@ -163,7 +163,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { for i, runner := range runnerList.Items { if runner.Status.RunnerId == 0 { updatedRunner := runner.DeepCopy() - updatedRunner.Status.Phase = corev1.PodRunning + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning updatedRunner.Status.RunnerId = i + 100 err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runner)) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -225,7 +225,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { for i, runner := range runnerList.Items { if runner.Status.RunnerId == 0 { updatedRunner := runner.DeepCopy() - updatedRunner.Status.Phase = corev1.PodRunning + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning updatedRunner.Status.RunnerId = i + 100 err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runner)) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -390,12 +390,12 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { ).Should(BeEquivalentTo(2), "2 EphemeralRunner should be created") updatedRunner := runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerSucceeded err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") updatedRunner = runnerList.Items[1].DeepCopy() - updatedRunner.Status.Phase = corev1.PodRunning + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[1])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -468,12 +468,12 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { ).Should(BeEquivalentTo(2), "2 EphemeralRunner should be created") updatedRunner := runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") updatedRunner = runnerList.Items[1].DeepCopy() - updatedRunner.Status.Phase = corev1.PodPending + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerPending err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[1])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -520,12 +520,12 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { ).Should(BeEquivalentTo(2), "2 EphemeralRunner should be created") updatedRunner := runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerSucceeded err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") updatedRunner = runnerList.Items[1].DeepCopy() - updatedRunner.Status.Phase = corev1.PodRunning + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[1])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -555,7 +555,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { } for _, runner := range runnerList.Items { - if runner.Status.Phase == corev1.PodSucceeded { + if runner.Status.Phase == v1alpha1.EphemeralRunnerSucceeded { return fmt.Errorf("Runner %s is in Succeeded phase", runner.Name) } } @@ -594,12 +594,12 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { ).Should(BeEquivalentTo(2), "2 EphemeralRunner should be created") updatedRunner := runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerSucceeded err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") updatedRunner = runnerList.Items[1].DeepCopy() - updatedRunner.Status.Phase = corev1.PodPending + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerPending err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[1])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -615,9 +615,9 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { succeeded := 0 for _, runner := range runnerList.Items { switch runner.Status.Phase { - case corev1.PodSucceeded: + case v1alpha1.EphemeralRunnerSucceeded: succeeded++ - case corev1.PodPending: + case v1alpha1.EphemeralRunnerPending: pending++ } } @@ -657,7 +657,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { return fmt.Errorf("Expected 1 runner, got %d", len(runnerList.Items)) } - if runnerList.Items[0].Status.Phase != corev1.PodPending { + if runnerList.Items[0].Status.Phase != v1alpha1.EphemeralRunnerPending { return fmt.Errorf("Expected runner to be in Pending, got %s", runnerList.Items[0].Status.Phase) } @@ -669,7 +669,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { // Now, the ephemeral runner finally is done and we can scale down to 0 updatedRunner = runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerSucceeded err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -715,12 +715,12 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { // Put one runner in Pending and one in Running updatedRunner := runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodPending + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerPending err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") updatedRunner = runnerList.Items[1].DeepCopy() - updatedRunner.Status.Phase = corev1.PodRunning + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[1])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -738,9 +738,9 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { for _, runner := range runnerList.Items { switch runner.Status.Phase { - case corev1.PodPending: + case v1alpha1.EphemeralRunnerPending: pending++ - case corev1.PodRunning: + case v1alpha1.EphemeralRunnerRunning: running++ } @@ -839,12 +839,12 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { // Put one runner in Succeeded and one in Running updatedRunner := runnerList.Items[0].DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerSucceeded err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") updatedRunner = runnerList.Items[1].DeepCopy() - updatedRunner.Status.Phase = corev1.PodRunning + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerRunning err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runnerList.Items[1])) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -863,9 +863,9 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { for _, runner := range runnerList.Items { switch runner.Status.Phase { - case corev1.PodSucceeded: + case v1alpha1.EphemeralRunnerSucceeded: succeeded++ - case corev1.PodRunning: + case v1alpha1.EphemeralRunnerRunning: running++ } } @@ -907,7 +907,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { } for _, runner := range runnerList.Items { - if runner.Status.Phase == corev1.PodSucceeded { + if runner.Status.Phase == v1alpha1.EphemeralRunnerSucceeded { return fmt.Errorf("Expected no runners in Succeeded phase, got one") } } @@ -972,7 +972,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { pending := pendingOriginal.DeepCopy() pending.Status.RunnerId = 101 - pending.Status.Phase = corev1.PodPending + pending.Status.Phase = v1alpha1.EphemeralRunnerPending err = k8sClient.Status().Patch(ctx, pending, client.MergeFrom(pendingOriginal)) if err != nil { @@ -986,7 +986,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { empty = empty[1:] running := runningOriginal.DeepCopy() running.Status.RunnerId = 102 - running.Status.Phase = corev1.PodRunning + running.Status.Phase = v1alpha1.EphemeralRunnerRunning err = k8sClient.Status().Patch(ctx, running, client.MergeFrom(runningOriginal)) if err != nil { @@ -1000,7 +1000,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() { failed := pendingOriginal.DeepCopy() failed.Status.RunnerId = 103 - failed.Status.Phase = corev1.PodFailed + failed.Status.Phase = v1alpha1.EphemeralRunnerAborted err = k8sClient.Status().Patch(ctx, failed, client.MergeFrom(failedOriginal)) if err != nil { @@ -1236,7 +1236,7 @@ var _ = Describe("Test EphemeralRunnerSet controller with proxy settings", func( for i, runner := range runnerList.Items { if runner.Status.RunnerId == 0 { updatedRunner := runner.DeepCopy() - updatedRunner.Status.Phase = corev1.PodSucceeded + updatedRunner.Status.Phase = v1alpha1.EphemeralRunnerSucceeded updatedRunner.Status.RunnerId = i + 100 err = k8sClient.Status().Patch(ctx, updatedRunner, client.MergeFrom(&runner)) Expect(err).NotTo(HaveOccurred(), "failed to update EphemeralRunner") @@ -1355,7 +1355,7 @@ var _ = Describe("Test EphemeralRunnerSet controller with proxy settings", func( ).Should(BeEquivalentTo(1), "failed to create ephemeral runner") runner := runnerList.Items[0].DeepCopy() - runner.Status.Phase = corev1.PodRunning + runner.Status.Phase = v1alpha1.EphemeralRunnerRunning runner.Status.RunnerId = 100 err = k8sClient.Status().Patch(ctx, runner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update ephemeral runner status") @@ -1505,7 +1505,7 @@ var _ = Describe("Test EphemeralRunnerSet controller with custom root CA", func( Expect(runner.Spec.GitHubServerTLS).NotTo(BeNil(), "runner tls config should not be nil") Expect(runner.Spec.GitHubServerTLS).To(BeEquivalentTo(ephemeralRunnerSet.Spec.EphemeralRunnerSpec.GitHubServerTLS), "runner tls config should be correct") - runner.Status.Phase = corev1.PodRunning + runner.Status.Phase = v1alpha1.EphemeralRunnerRunning runner.Status.RunnerId = 100 err = k8sClient.Status().Patch(ctx, runner, client.MergeFrom(&runnerList.Items[0])) Expect(err).NotTo(HaveOccurred(), "failed to update ephemeral runner status")