diff --git a/pkg/controller/jenkins/configuration/base/reconcile.go b/pkg/controller/jenkins/configuration/base/reconcile.go index 5c86788b..e6035b99 100644 --- a/pkg/controller/jenkins/configuration/base/reconcile.go +++ b/pkg/controller/jenkins/configuration/base/reconcile.go @@ -56,7 +56,7 @@ func New(client client.Client, scheme *runtime.Scheme, logger logr.Logger, func (r *ReconcileJenkinsBaseConfiguration) Reconcile() (reconcile.Result, jenkinsclient.Jenkins, error) { metaObject := resources.NewResourceObjectMeta(r.jenkins) - err := r.ensureResourcesReuiredForJenkinsPod(metaObject) + err := r.ensureResourcesRequiredForJenkinsPod(metaObject) if err != nil { return reconcile.Result{}, nil, err } @@ -91,20 +91,14 @@ func (r *ReconcileJenkinsBaseConfiguration) Reconcile() (reconcile.Result, jenki } if !ok { r.logger.V(log.VWarn).Info("Please correct Jenkins CR (spec.master.plugins)") - currentJenkinsMasterPod, err := r.getJenkinsMasterPod(metaObject) - if err != nil { - return reconcile.Result{}, nil, err - } - if err := r.k8sClient.Delete(context.TODO(), currentJenkinsMasterPod); err != nil { - return reconcile.Result{}, nil, err - } + return reconcile.Result{Requeue: true}, nil, r.restartJenkinsMasterPod(metaObject) } result, err = r.ensureBaseConfiguration(jenkinsClient) return result, jenkinsClient, err } -func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesReuiredForJenkinsPod(metaObject metav1.ObjectMeta) error { +func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesRequiredForJenkinsPod(metaObject metav1.ObjectMeta) error { if err := r.createOperatorCredentialsSecret(metaObject); err != nil { return err } @@ -133,7 +127,7 @@ func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesReuiredForJenkinsPod( if err := r.createRBAC(metaObject); err != nil { return err } - r.logger.V(log.VDebug).Info("User configuration config map is present") + r.logger.V(log.VDebug).Info("Service account, role and role binding are present") if err := r.createService(metaObject); err != nil { return err @@ -339,16 +333,21 @@ func (r *ReconcileJenkinsBaseConfiguration) ensureJenkinsMasterPod(meta metav1.O } if currentJenkinsMasterPod != nil && recreatePod && currentJenkinsMasterPod.ObjectMeta.DeletionTimestamp == nil { - r.logger.Info(fmt.Sprintf("Terminating Jenkins Master Pod %s/%s", currentJenkinsMasterPod.Namespace, currentJenkinsMasterPod.Name)) - if err := r.k8sClient.Delete(context.TODO(), currentJenkinsMasterPod); err != nil { - return reconcile.Result{}, err - } - return reconcile.Result{Requeue: true}, nil + return reconcile.Result{Requeue: true}, r.restartJenkinsMasterPod(meta) } return reconcile.Result{}, nil } +func (r *ReconcileJenkinsBaseConfiguration) restartJenkinsMasterPod(meta metav1.ObjectMeta) error { + currentJenkinsMasterPod, err := r.getJenkinsMasterPod(meta) + r.logger.Info(fmt.Sprintf("Terminating Jenkins Master Pod %s/%s", currentJenkinsMasterPod.Namespace, currentJenkinsMasterPod.Name)) + if err != nil { + return err + } + return r.k8sClient.Delete(context.TODO(), currentJenkinsMasterPod) +} + func (r *ReconcileJenkinsBaseConfiguration) waitForJenkins(meta metav1.ObjectMeta) (reconcile.Result, error) { jenkinsMasterPodStatus, err := r.getJenkinsMasterPod(meta) if err != nil { diff --git a/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go b/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go index 928d7c00..823e853a 100644 --- a/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go +++ b/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go @@ -138,7 +138,7 @@ def Jenkins jenkins = Jenkins.getInstance() def seedViewName = 'seed-jobs' def nonSeedViewName = 'non-seed-jobs' -def jenkinsViewName = 'jenkins' +def jenkinsViewName = '` + constants.OperatorName + `' if (jenkins.getView(seedViewName) == null) { def seedView = new ListView(seedViewName) diff --git a/pkg/controller/jenkins/configuration/base/resources/scripts_configmap.go b/pkg/controller/jenkins/configuration/base/resources/scripts_configmap.go index 75e72899..25de90fb 100644 --- a/pkg/controller/jenkins/configuration/base/resources/scripts_configmap.go +++ b/pkg/controller/jenkins/configuration/base/resources/scripts_configmap.go @@ -13,7 +13,7 @@ import ( const installPluginsCommand = "install-plugins.sh" -// bash scripts installs single jenkins plugin with concrete version +// bash scripts installs single jenkins plugin with specific version const installPluginsBashFmt = `#!/bin/bash -eu # Resolve dependencies and download plugins given on the command line diff --git a/pkg/controller/jenkins/jenkins_controller.go b/pkg/controller/jenkins/jenkins_controller.go index c3247b11..090780e6 100644 --- a/pkg/controller/jenkins/jenkins_controller.go +++ b/pkg/controller/jenkins/jenkins_controller.go @@ -90,7 +90,7 @@ type ReconcileJenkins struct { // Reconcile it's a main reconciliation loop which maintain desired state based on Jenkins.Spec func (r *ReconcileJenkins) Reconcile(request reconcile.Request) (reconcile.Result, error) { logger := r.buildLogger(request.Name) - logger.Info("Reconciling Jenkins") + logger.V(log.VDebug).Info("Reconciling Jenkins") result, err := r.reconcile(request, logger) if err != nil && errors.IsConflict(err) { @@ -201,6 +201,7 @@ func (r *ReconcileJenkins) setDefaults(jenkins *virtuslabv1alpha1.Jenkins, logge } if len(jenkins.Spec.Backup) == 0 { logger.Info("Setting default backup strategy: " + virtuslabv1alpha1.JenkinsBackupTypeNoBackup) + logger.V(log.VWarn).Info("Backup is disable !!! Please configure backup in '.spec.backup'") changed = true jenkins.Spec.Backup = virtuslabv1alpha1.JenkinsBackupTypeNoBackup } diff --git a/pkg/controller/jenkins/plugins/base_plugins.go b/pkg/controller/jenkins/plugins/base_plugins.go index bc68e4a9..f962d273 100644 --- a/pkg/controller/jenkins/plugins/base_plugins.go +++ b/pkg/controller/jenkins/plugins/base_plugins.go @@ -1,27 +1,20 @@ package plugins -// BasePlugins returns map of plugins to install by operator -func BasePlugins() (plugins map[string][]string) { - plugins = map[string][]string{} - - for rootPluginName, dependentPlugins := range BasePluginsMap { - plugins[rootPluginName] = []string{} - for _, pluginName := range dependentPlugins { - plugins[rootPluginName] = append(plugins[rootPluginName], pluginName.String()) - } - } - - return -} +const ( + // ApacheComponentsClientPlugin is apache-httpcomponents-client-4-api Jenkins plugin with version + ApacheComponentsClientPlugin = "apache-httpcomponents-client-4-api:4.5.5-3.0" + // Jackson2ADIPlugin is jackson2-api-httpcomponents-client-4-api Jenkins plugin with version + Jackson2ADIPlugin = "jackson2-api:2.9.8" +) // BasePluginsMap contains plugins to install by operator var BasePluginsMap = map[string][]Plugin{ Must(New("kubernetes:1.13.8")).String(): { - Must(New("apache-httpcomponents-client-4-api:4.5.5-3.0")), + Must(New(ApacheComponentsClientPlugin)), Must(New("cloudbees-folder:6.7")), Must(New("credentials:2.1.18")), Must(New("durable-task:1.28")), - Must(New("jackson2-api:2.9.8")), + Must(New(Jackson2ADIPlugin)), Must(New("kubernetes-credentials:0.4.0")), Must(New("plain-credentials:1.5")), Must(New("structs:1.17")), @@ -38,7 +31,7 @@ var BasePluginsMap = map[string][]Plugin{ }, Must(New("workflow-aggregator:2.6")).String(): { Must(New("ace-editor:1.1")), - Must(New("apache-httpcomponents-client-4-api:4.5.5-3.0")), + Must(New(ApacheComponentsClientPlugin)), Must(New("authentication-tokens:1.3")), Must(New("branch-api:2.1.2")), Must(New("cloudbees-folder:6.7")), @@ -51,7 +44,7 @@ var BasePluginsMap = map[string][]Plugin{ Must(New("git-client:2.7.6")), Must(New("git-server:1.7")), Must(New("handlebars:1.1.1")), - Must(New("jackson2-api:2.9.8")), + Must(New(Jackson2ADIPlugin)), Must(New("jquery-detached:1.2.1")), Must(New("jsch:0.1.55")), Must(New("junit:1.26.1")), @@ -88,7 +81,7 @@ var BasePluginsMap = map[string][]Plugin{ Must(New("workflow-support:3.0")), }, Must(New("git:3.9.1")).String(): { - Must(New("apache-httpcomponents-client-4-api:4.5.5-3.0")), + Must(New(ApacheComponentsClientPlugin)), Must(New("credentials:2.1.18")), Must(New("display-url-api:2.3.0")), Must(New("git-client:2.7.6")), @@ -114,3 +107,17 @@ var BasePluginsMap = map[string][]Plugin{ }, Must(New("simple-theme-plugin:0.5.1")).String(): {}, } + +// BasePlugins returns map of plugins to install by operator +func BasePlugins() (plugins map[string][]string) { + plugins = map[string][]string{} + + for rootPluginName, dependentPlugins := range BasePluginsMap { + plugins[rootPluginName] = []string{} + for _, pluginName := range dependentPlugins { + plugins[rootPluginName] = append(plugins[rootPluginName], pluginName.String()) + } + } + + return +}