diff --git a/controllers/runner_controller.go b/controllers/runner_controller.go index d7e6931b..fba3259d 100644 --- a/controllers/runner_controller.go +++ b/controllers/runner_controller.go @@ -36,7 +36,6 @@ import ( ) const ( - defaultImage = "summerwind/actions-runner:latest" containerName = "runner" ) @@ -51,6 +50,8 @@ type RunnerReconciler struct { Log logr.Logger Scheme *runtime.Scheme GitHubClient *github.Client + RunnerImage string + DockerImage string } // +kubebuilder:rbac:groups=actions.summerwind.dev,resources=runners,verbs=get;list;watch;create;update;patch;delete @@ -196,9 +197,9 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { group int64 = 0 ) - image := runner.Spec.Image - if image == "" { - image = defaultImage + runnerImage := runner.Spec.Image + if runnerImage == "" { + runnerImage = r.RunnerImage } pod := corev1.Pod{ @@ -211,7 +212,7 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { Containers: []corev1.Container{ { Name: containerName, - Image: image, + Image: runnerImage, ImagePullPolicy: "Always", Env: []corev1.EnvVar{ { @@ -239,7 +240,7 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) { }, { Name: "docker", - Image: "docker:19.03.5-dind", + Image: r.DockerImage, VolumeMounts: []corev1.VolumeMount{ { Name: "docker", diff --git a/main.go b/main.go index 0c48e1e1..7c833479 100644 --- a/main.go +++ b/main.go @@ -34,6 +34,11 @@ import ( // +kubebuilder:scaffold:imports ) +const ( + defaultRunnerImage = "summerwind/actions-runner:v2.165.1" + defaultDockerImage = "docker:19.03.5-dind" +) + var ( scheme = runtime.NewScheme() setupLog = ctrl.Log.WithName("setup") @@ -47,11 +52,19 @@ func init() { } func main() { - var metricsAddr string - var enableLeaderElection bool + var ( + metricsAddr string + enableLeaderElection bool + + runnerImage string + dockerImage string + ) + flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") flag.BoolVar(&enableLeaderElection, "enable-leader-election", false, "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") + flag.StringVar(&runnerImage, "runner-image", defaultRunnerImage, "The image name of self-hosted runner container.") + flag.StringVar(&dockerImage, "docker-image", defaultDockerImage, "The image name of docker sidecar container.") flag.Parse() ghToken := os.Getenv("GITHUB_TOKEN") @@ -85,6 +98,8 @@ func main() { Log: ctrl.Log.WithName("controllers").WithName("Runner"), Scheme: mgr.GetScheme(), GitHubClient: ghClient, + RunnerImage: runnerImage, + DockerImage: dockerImage, } if err = runnerReconciler.SetupWithManager(mgr); err != nil {