diff --git a/Gopkg.lock b/Gopkg.lock index 10dbae69..11ca84e3 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -874,6 +874,7 @@ "github.com/operator-framework/operator-sdk/version", "github.com/stretchr/testify/assert", "k8s.io/api/core/v1", + "k8s.io/api/rbac/v1", "k8s.io/apimachinery/pkg/api/errors", "k8s.io/apimachinery/pkg/api/resource", "k8s.io/apimachinery/pkg/apis/meta/v1", @@ -885,6 +886,7 @@ "k8s.io/apimachinery/pkg/util/wait", "k8s.io/client-go/kubernetes/scheme", "k8s.io/client-go/plugin/pkg/client/auth/gcp", + "k8s.io/client-go/util/workqueue", "k8s.io/code-generator/cmd/client-gen", "k8s.io/code-generator/cmd/conversion-gen", "k8s.io/code-generator/cmd/deepcopy-gen", @@ -898,6 +900,7 @@ "sigs.k8s.io/controller-runtime/pkg/client/fake", "sigs.k8s.io/controller-runtime/pkg/controller", "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil", + "sigs.k8s.io/controller-runtime/pkg/event", "sigs.k8s.io/controller-runtime/pkg/handler", "sigs.k8s.io/controller-runtime/pkg/manager", "sigs.k8s.io/controller-runtime/pkg/reconcile", diff --git a/README.md b/README.md index 2f38c0f0..2e92efe7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Jenkins Operator +[![Build Status](https://travis-ci.org/VirtusLab/jenkins-operator.svg?branch=master)](https://travis-ci.org/VirtusLab/jenkins-operator) +[![Go Report Card](https://goreportcard.com/badge/github.com/VirtusLab/jenkins-operator "Go Report Card")](https://goreportcard.com/report/github.com/VirtusLab/jenkins-operator) + ## What's Jenkins Operator? Jenkins operator it's a Kubernetes native operator which fully manages Jenkins on Kubernetes. diff --git a/pkg/controller/jenkins/configuration/base/reconcile.go b/pkg/controller/jenkins/configuration/base/reconcile.go index db677eb6..a056be90 100644 --- a/pkg/controller/jenkins/configuration/base/reconcile.go +++ b/pkg/controller/jenkins/configuration/base/reconcile.go @@ -437,7 +437,7 @@ func (r *ReconcileJenkinsBaseConfiguration) baseConfiguration(jenkinsClient jenk hash := sha256.New() var keys []string - for key, _ := range configuration.Data { + for key := range configuration.Data { keys = append(keys, key) } sort.Strings(keys) diff --git a/pkg/controller/jenkins/configuration/base/resources/pod.go b/pkg/controller/jenkins/configuration/base/resources/pod.go index ffbfe17d..57ef94f0 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod.go @@ -65,7 +65,7 @@ func NewJenkinsMasterPod(objectMeta metav1.ObjectMeta, jenkins *virtuslabv1alpha ObjectMeta: objectMeta, Spec: corev1.PodSpec{ ServiceAccountName: objectMeta.Name, - RestartPolicy: corev1.RestartPolicyNever, + RestartPolicy: corev1.RestartPolicyNever, SecurityContext: &corev1.PodSecurityContext{ RunAsUser: &runAsUser, RunAsGroup: &runAsUser, diff --git a/pkg/controller/jenkins/configuration/base/resources/rbac.go b/pkg/controller/jenkins/configuration/base/resources/rbac.go index 845be317..0944ab30 100644 --- a/pkg/controller/jenkins/configuration/base/resources/rbac.go +++ b/pkg/controller/jenkins/configuration/base/resources/rbac.go @@ -15,6 +15,7 @@ const ( updateVerb = "update" ) +// NewRole returns rbac role for jenkins master func NewRole(meta metav1.ObjectMeta) *v1.Role { return &v1.Role{ TypeMeta: metav1.TypeMeta{ @@ -48,6 +49,7 @@ func NewRole(meta metav1.ObjectMeta) *v1.Role { } } +// NewRoleBinding returns rbac role binding for jenkins master func NewRoleBinding(meta metav1.ObjectMeta) *v1.RoleBinding { return &v1.RoleBinding{ TypeMeta: metav1.TypeMeta{ diff --git a/pkg/controller/jenkins/configuration/base/resources/service_account.go b/pkg/controller/jenkins/configuration/base/resources/service_account.go index e84e3f52..5fc45c19 100644 --- a/pkg/controller/jenkins/configuration/base/resources/service_account.go +++ b/pkg/controller/jenkins/configuration/base/resources/service_account.go @@ -5,6 +5,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) +// NewServiceAccount return kubernetes service account func NewServiceAccount(meta metav1.ObjectMeta) *v1.ServiceAccount { return &v1.ServiceAccount{ TypeMeta: metav1.TypeMeta{ diff --git a/pkg/controller/jenkins/jobs/jobs.go b/pkg/controller/jenkins/jobs/jobs.go index 9ea716cb..cb01f6ce 100644 --- a/pkg/controller/jenkins/jobs/jobs.go +++ b/pkg/controller/jenkins/jobs/jobs.go @@ -219,7 +219,7 @@ func (jobs *Jobs) ensureExpiredBuild(build virtuslabv1alpha1.Build, jenkins *vir } func (jobs *Jobs) removeBuildFromStatus(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins) error { - builds := make([]virtuslabv1alpha1.Build, len(jenkins.Status.Builds), len(jenkins.Status.Builds)) + builds := make([]virtuslabv1alpha1.Build, len(jenkins.Status.Builds)) for _, existingBuild := range jenkins.Status.Builds { if existingBuild.JobName != build.JobName && existingBuild.Hash != build.Hash { builds = append(builds, existingBuild) diff --git a/pkg/controller/jenkins/plugin/plugin.go b/pkg/controller/jenkins/plugin/plugin.go index 5d232644..ea17197c 100644 --- a/pkg/controller/jenkins/plugin/plugin.go +++ b/pkg/controller/jenkins/plugin/plugin.go @@ -46,22 +46,20 @@ func VerifyDependencies(values ...map[string][]Plugin) bool { valid := true for _, value := range values { - if value != nil { - for rootPluginNameAndVersion, plugins := range value { - if rootPlugin, err := New(rootPluginNameAndVersion); err != nil { - valid = false - } else { - allPlugins[rootPlugin.Name] = append(allPlugins[rootPlugin.Name], Plugin{ - Name: rootPlugin.Name, - Version: rootPlugin.Version, - rootPluginNameAndVersion: rootPluginNameAndVersion}) - } - for _, plugin := range plugins { - allPlugins[plugin.Name] = append(allPlugins[plugin.Name], Plugin{ - Name: plugin.Name, - Version: plugin.Version, - rootPluginNameAndVersion: rootPluginNameAndVersion}) - } + for rootPluginNameAndVersion, plugins := range value { + if rootPlugin, err := New(rootPluginNameAndVersion); err != nil { + valid = false + } else { + allPlugins[rootPlugin.Name] = append(allPlugins[rootPlugin.Name], Plugin{ + Name: rootPlugin.Name, + Version: rootPlugin.Version, + rootPluginNameAndVersion: rootPluginNameAndVersion}) + } + for _, plugin := range plugins { + allPlugins[plugin.Name] = append(allPlugins[plugin.Name], Plugin{ + Name: plugin.Name, + Version: plugin.Version, + rootPluginNameAndVersion: rootPluginNameAndVersion}) } } } diff --git a/pkg/log/log.go b/pkg/log/log.go index 0947ca4b..3f16e90e 100644 --- a/pkg/log/log.go +++ b/pkg/log/log.go @@ -1,13 +1,12 @@ package log import ( - "github.com/go-logr/logr" "sigs.k8s.io/controller-runtime/pkg/runtime/log" logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" ) // Log represents global logger -var Log logr.Logger = log.Log.WithName("controller-jenkins") +var Log = log.Log.WithName("controller-jenkins") const ( // VWarn defines warning log level