From 472902f1dbd9b017281a628cb9794c38e1f2e097 Mon Sep 17 00:00:00 2001 From: Tobia De Koninck Date: Fri, 18 Apr 2025 12:48:35 +0200 Subject: [PATCH] feat(skipPlugins): check whether base plugins are installed --- api/v1alpha2/zz_generated.deepcopy.go | 5 +++++ .../base/resources/scripts_configmap.go | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/api/v1alpha2/zz_generated.deepcopy.go b/api/v1alpha2/zz_generated.deepcopy.go index c1cca2ab..095bcb76 100644 --- a/api/v1alpha2/zz_generated.deepcopy.go +++ b/api/v1alpha2/zz_generated.deepcopy.go @@ -361,6 +361,11 @@ func (in *JenkinsMaster) DeepCopyInto(out *JenkinsMaster) { *out = new(bool) **out = **in } + if in.SkipPlugins != nil { + in, out := &in.SkipPlugins, &out.SkipPlugins + *out = new(bool) + **out = **in + } if in.HostAliases != nil { in, out := &in.HostAliases, &out.HostAliases *out = make([]corev1.HostAlias, len(*in)) diff --git a/pkg/configuration/base/resources/scripts_configmap.go b/pkg/configuration/base/resources/scripts_configmap.go index 09145623..a04b58b5 100644 --- a/pkg/configuration/base/resources/scripts_configmap.go +++ b/pkg/configuration/base/resources/scripts_configmap.go @@ -2,6 +2,7 @@ package resources import ( "fmt" + "strings" "text/template" "github.com/jenkinsci/kubernetes-operator/api/v1alpha2" @@ -14,6 +15,8 @@ import ( const installPluginsCommand = "jenkins-plugin-cli" +var requiredBasePlugins = []string{"configuration-as-code", "git", "job-dsl", "kubernetes", "kubernetes-credentials-provider", "workflow-aggregator"} + var initBashTemplate = template.Must(template.New(InitScriptName).Parse(`#!/usr/bin/env bash set -e set -x @@ -59,6 +62,18 @@ EOF {{ $installPluginsCommand }} --verbose --latest {{ .LatestPlugins }} -f {{ .JenkinsHomePath }}/user-plugins.txt echo "Installing plugins required by user - end" +{{else}} +echo "Skipping installation if plugins" +echo "Checking if required base plugins are installed" +installedPlugins=$(jenkins-plugin-cli --list 2> /dev/null) +for plugin in {{ .RequiredBasePlugins }}; do + if ! echo "$installedPlugins" | grep -q "^$plugin "; then + echo "Required base plugin $plugin not installed, exiting" + exit 1 + else + echo "Found $plugin" + fi +done {{end}} `)) @@ -84,6 +99,7 @@ func buildInitBashScript(jenkins *v1alpha2.Jenkins) (*string, error) { JenkinsHomePath string InitConfigurationPath string InstallPluginsCommand string + RequiredBasePlugins string JenkinsScriptsVolumePath string BasePlugins []v1alpha2.Plugin UserPlugins []v1alpha2.Plugin @@ -95,6 +111,7 @@ func buildInitBashScript(jenkins *v1alpha2.Jenkins) (*string, error) { BasePlugins: jenkins.Spec.Master.BasePlugins, UserPlugins: jenkins.Spec.Master.Plugins, InstallPluginsCommand: installPluginsCommand, + RequiredBasePlugins: strings.Join(requiredBasePlugins, " "), JenkinsScriptsVolumePath: JenkinsScriptsVolumePath, LatestPlugins: *latestP, SkipPlugins: *skipPlugins,