Don't compare runner connetion token at restart need check (#227)

Fixes #143
This commit is contained in:
Juho Saarinen 2020-12-08 01:48:35 +02:00 committed by GitHub
parent 85c29a95f5
commit f710a54110
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 1 deletions

View File

@ -198,14 +198,20 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
return ctrl.Result{}, nil
}
if !runnerBusy && (!reflect.DeepEqual(pod.Spec.Containers[0].Env, newPod.Spec.Containers[0].Env) || pod.Spec.Containers[0].Image != newPod.Spec.Containers[0].Image) {
// Filter out token that is changed hourly.
currentEnvValues := filterEnvVars(pod.Spec.Containers[0].Env, "RUNNER_TOKEN")
newEnvValues := filterEnvVars(newPod.Spec.Containers[0].Env, "RUNNER_TOKEN")
if !runnerBusy && (!reflect.DeepEqual(currentEnvValues, newEnvValues) || pod.Spec.Containers[0].Image != newPod.Spec.Containers[0].Image) {
restart = true
}
// Don't do anything if there's no need to restart the runner
if !restart {
return ctrl.Result{}, err
}
// Delete current pod if recreation is needed
if err := r.Delete(ctx, &pod); err != nil {
log.Error(err, "Failed to delete pod resource")
return ctrl.Result{}, err

14
controllers/utils.go Normal file
View File

@ -0,0 +1,14 @@
package controllers
import (
corev1 "k8s.io/api/core/v1"
)
func filterEnvVars(envVars []corev1.EnvVar, filter string) (filtered []corev1.EnvVar) {
for _, envVar := range envVars {
if envVar.Name != filter {
filtered = append(filtered, envVar)
}
}
return filtered
}