diff --git a/README.md b/README.md index 2e92efe7..8ca2da6b 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,6 @@ Feel free to file [issues](https://github.com/VirtusLab/jenkins-operator/issues) Common: * simple API for generating Kubernetes events using one common format -* create Jenkins Jobs View for all jobs managed by the operator * code clean up and more tests Base configuration: 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 71fce773..928d7c00 100644 --- a/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go +++ b/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go @@ -10,7 +10,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -const basicSettingsFmt = `import jenkins.model.Jenkins +const basicSettingsFmt = ` +import jenkins.model.Jenkins import jenkins.model.JenkinsLocationConfiguration import hudson.model.Node.Mode @@ -23,7 +24,8 @@ jenkins.save() ` -const enableCSRF = `import hudson.security.csrf.DefaultCrumbIssuer +const enableCSRF = ` +import hudson.security.csrf.DefaultCrumbIssuer import jenkins.model.Jenkins def jenkins = Jenkins.instance @@ -37,7 +39,8 @@ if (jenkins.getCrumbIssuer() == null) { } ` -const disableUsageStats = `import jenkins.model.Jenkins +const disableUsageStats = ` +import jenkins.model.Jenkins def jenkins = Jenkins.instance @@ -50,7 +53,8 @@ if (jenkins.isUsageStatisticsCollected()) { } ` -const enableMasterAccessControl = `import jenkins.security.s2m.AdminWhitelistRule +const enableMasterAccessControl = ` +import jenkins.security.s2m.AdminWhitelistRule import jenkins.model.Jenkins // see https://wiki.jenkins-ci.org/display/JENKINS/Slave+To+Master+Access+Control @@ -97,7 +101,8 @@ println("CLI disabled") jenkins.save() ` -const configureKubernetesPluginFmt = `import com.cloudbees.plugins.credentials.CredentialsScope +const configureKubernetesPluginFmt = ` +import com.cloudbees.plugins.credentials.CredentialsScope import com.cloudbees.plugins.credentials.SystemCredentialsProvider import com.cloudbees.plugins.credentials.domains.Domain import jenkins.model.Jenkins @@ -125,6 +130,37 @@ jenkins.clouds.add(kubernetes) jenkins.save() ` +const configureViews = ` +import hudson.model.ListView +import jenkins.model.Jenkins + +def Jenkins jenkins = Jenkins.getInstance() + +def seedViewName = 'seed-jobs' +def nonSeedViewName = 'non-seed-jobs' +def jenkinsViewName = 'jenkins' + +if (jenkins.getView(seedViewName) == null) { + def seedView = new ListView(seedViewName) + seedView.setIncludeRegex('.*` + constants.SeedJobSuffix + `.*') + jenkins.addView(seedView) +} + +if (jenkins.getView(nonSeedViewName) == null) { + def nonSeedView = new ListView(nonSeedViewName) + nonSeedView.setIncludeRegex('((?!seed)(?!jenkins).)*') + jenkins.addView(nonSeedView) +} + +if (jenkins.getView(jenkinsViewName) == null) { + def jenkinsView = new ListView(jenkinsViewName) + jenkinsView.setIncludeRegex('.*` + constants.OperatorName + `.*') + jenkins.addView(jenkinsView) +} + +jenkins.save() +` + // GetBaseConfigurationConfigMapName returns name of Kubernetes config map used to base configuration func GetBaseConfigurationConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) string { return fmt.Sprintf("%s-base-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name) @@ -145,6 +181,7 @@ func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *virtuslabv1a "5-disable-insecure-features.groovy": disableInsecureFeatures, "6-configure-kubernetes-plugin.groovy": fmt.Sprintf(configureKubernetesPluginFmt, jenkins.ObjectMeta.Namespace, GetResourceName(jenkins), HTTPPortInt), + "7-configure-views.groovy": configureViews, }, }, nil } diff --git a/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go b/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go index 784aadc4..6adbe87c 100644 --- a/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go +++ b/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go @@ -8,9 +8,10 @@ import ( virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1" jenkinsclient "github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/client" - + "github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/constants" "github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/jobs" "github.com/VirtusLab/jenkins-operator/pkg/log" + "github.com/go-logr/logr" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" @@ -207,7 +208,7 @@ SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global( Jenkins jenkins = Jenkins.instance -def jobDslSeedName = "${params.DEPLOY_KEY_ID}-job-dsl-seed" +def jobDslSeedName = "${params.DEPLOY_KEY_ID}-` + constants.SeedJobSuffix + `" def jobDslDeployKeyName = "${params.DEPLOY_KEY_ID}" def jobRef = jenkins.getItem(jobDslSeedName) diff --git a/pkg/controller/jenkins/constants/constants.go b/pkg/controller/jenkins/constants/constants.go index 4c97d4a6..7a33ce15 100644 --- a/pkg/controller/jenkins/constants/constants.go +++ b/pkg/controller/jenkins/constants/constants.go @@ -5,4 +5,6 @@ const ( OperatorName = "jenkins-operator" // DefaultAmountOfExecutors is the default amount of Jenkins executors DefaultAmountOfExecutors = 3 + // SeedJobSuffix is a suffix added for all seed jobs + SeedJobSuffix = "job-dsl-seed" )