parent
bc35bdfa85
commit
e613219a89
|
|
@ -126,7 +126,13 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
newPod, err := r.newPod(ctx, runner)
|
if updated, err := r.updateRegistrationToken(ctx, runner); err != nil {
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
} else if updated {
|
||||||
|
return ctrl.Result{Requeue: true}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
newPod, err := r.newPod(runner)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err, "Could not create pod")
|
log.Error(err, "Could not create pod")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
|
|
@ -174,7 +180,13 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newPod, err := r.newPod(ctx, runner)
|
if updated, err := r.updateRegistrationToken(ctx, runner); err != nil {
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
} else if updated {
|
||||||
|
return ctrl.Result{Requeue: true}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
newPod, err := r.newPod(runner)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err, "Could not create pod")
|
log.Error(err, "Could not create pod")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
|
|
@ -249,21 +261,46 @@ func (r *RunnerReconciler) unregisterRunner(ctx context.Context, org, repo, name
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RunnerReconciler) newPod(ctx context.Context, runner v1alpha1.Runner) (corev1.Pod, error) {
|
func (r *RunnerReconciler) updateRegistrationToken(ctx context.Context, runner v1alpha1.Runner) (bool, error) {
|
||||||
|
if runner.IsRegisterable() {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
log := r.Log.WithValues("runner", runner.Name)
|
||||||
|
|
||||||
|
rt, err := r.GitHubClient.GetRegistrationToken(ctx, runner.Spec.Organization, runner.Spec.Repository, runner.Name)
|
||||||
|
if err != nil {
|
||||||
|
r.Recorder.Event(&runner, corev1.EventTypeWarning, "FailedUpdateRegistrationToken", "Updating registration token failed")
|
||||||
|
log.Error(err, "Failed to get new registration token")
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
updated := runner.DeepCopy()
|
||||||
|
updated.Status.Registration = v1alpha1.RunnerStatusRegistration{
|
||||||
|
Organization: runner.Spec.Organization,
|
||||||
|
Repository: runner.Spec.Repository,
|
||||||
|
Labels: runner.Spec.Labels,
|
||||||
|
Token: rt.GetToken(),
|
||||||
|
ExpiresAt: metav1.NewTime(rt.GetExpiresAt().Time),
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := r.Status().Update(ctx, updated); err != nil {
|
||||||
|
log.Error(err, "Failed to update runner status")
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Recorder.Event(&runner, corev1.EventTypeNormal, "RegistrationTokenUpdated", "Successfully update registration token")
|
||||||
|
log.Info("Updated registration token", "repository", runner.Spec.Repository)
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) {
|
||||||
var (
|
var (
|
||||||
privileged bool = true
|
privileged bool = true
|
||||||
dockerdInRunner bool = runner.Spec.DockerdWithinRunnerContainer != nil && *runner.Spec.DockerdWithinRunnerContainer
|
dockerdInRunner bool = runner.Spec.DockerdWithinRunnerContainer != nil && *runner.Spec.DockerdWithinRunnerContainer
|
||||||
err error
|
|
||||||
)
|
)
|
||||||
|
|
||||||
token := runner.Status.Registration.Token
|
|
||||||
if !runner.IsRegisterable() {
|
|
||||||
token, err = r.getRegistrationToken(ctx, runner)
|
|
||||||
if err != nil {
|
|
||||||
return corev1.Pod{}, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
runnerImage := runner.Spec.Image
|
runnerImage := runner.Spec.Image
|
||||||
if runnerImage == "" {
|
if runnerImage == "" {
|
||||||
runnerImage = r.RunnerImage
|
runnerImage = r.RunnerImage
|
||||||
|
|
@ -297,7 +334,7 @@ func (r *RunnerReconciler) newPod(ctx context.Context, runner v1alpha1.Runner) (
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "RUNNER_TOKEN",
|
Name: "RUNNER_TOKEN",
|
||||||
Value: token,
|
Value: runner.Status.Registration.Token,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "DOCKERD_IN_RUNNER",
|
Name: "DOCKERD_IN_RUNNER",
|
||||||
|
|
@ -484,20 +521,3 @@ func removeFinalizer(finalizers []string) ([]string, bool) {
|
||||||
|
|
||||||
return result, removed
|
return result, removed
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RunnerReconciler) getRegistrationToken(ctx context.Context, runner v1alpha1.Runner) (string, error) {
|
|
||||||
log := r.Log.WithValues("runner", runner.Name)
|
|
||||||
if runner.IsRegisterable() {
|
|
||||||
return runner.Status.Registration.Token, nil
|
|
||||||
} else {
|
|
||||||
rt, err := r.GitHubClient.GetRegistrationToken(ctx, runner.Spec.Organization, runner.Spec.Repository, runner.Name)
|
|
||||||
if err != nil {
|
|
||||||
r.Recorder.Event(&runner, corev1.EventTypeWarning, "FailedUpdateRegistrationToken", "Updating registration token failed")
|
|
||||||
log.Error(err, "Failed to get new registration token")
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Info("Updated registration token", "repository", runner.Spec.Repository)
|
|
||||||
return rt.GetToken(), nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue