#43 Add support for JENKINS_OPTS, fix the --prefix bug
This commit is contained in:
parent
55601886c1
commit
01655785b5
|
|
@ -127,6 +127,29 @@ func (r *ReconcileJenkinsBaseConfiguration) Reconcile() (reconcile.Result, jenki
|
||||||
return result, jenkinsClient, err
|
return result, jenkinsClient, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetJenkinsOpts put container JENKINS_OPTS env parameters in map and returns it
|
||||||
|
func GetJenkinsOpts(jenkins *v1alpha2.Jenkins) map[string]string {
|
||||||
|
envs := jenkins.Spec.Master.Containers[0].Env
|
||||||
|
jenkinsOpts := make(map[string]string)
|
||||||
|
|
||||||
|
for k, v := range envs {
|
||||||
|
if v.Name == "JENKINS_OPTS" {
|
||||||
|
jenkinsOptsEnv := envs[k]
|
||||||
|
jenkinsOptsWithDashes := jenkinsOptsEnv.Value
|
||||||
|
jenkinsOptsWithDashes = strings.ReplaceAll(jenkinsOptsWithDashes, "--", "") // Remove dashes
|
||||||
|
jenkinsOptsWithEqOperators := strings.Split(jenkinsOptsWithDashes, " ")
|
||||||
|
|
||||||
|
for _, vx := range jenkinsOptsWithEqOperators {
|
||||||
|
opt := strings.Split(vx, "=")
|
||||||
|
jenkinsOpts[opt[0]] = opt[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
return jenkinsOpts
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesRequiredForJenkinsPod(metaObject metav1.ObjectMeta) error {
|
func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesRequiredForJenkinsPod(metaObject metav1.ObjectMeta) error {
|
||||||
if err := r.createOperatorCredentialsSecret(metaObject); err != nil {
|
if err := r.createOperatorCredentialsSecret(metaObject); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -748,6 +771,11 @@ func (r *ReconcileJenkinsBaseConfiguration) waitForJenkins(meta metav1.ObjectMet
|
||||||
func (r *ReconcileJenkinsBaseConfiguration) ensureJenkinsClient(meta metav1.ObjectMeta) (jenkinsclient.Jenkins, error) {
|
func (r *ReconcileJenkinsBaseConfiguration) ensureJenkinsClient(meta metav1.ObjectMeta) (jenkinsclient.Jenkins, error) {
|
||||||
jenkinsURL, err := jenkinsclient.BuildJenkinsAPIUrl(
|
jenkinsURL, err := jenkinsclient.BuildJenkinsAPIUrl(
|
||||||
r.jenkins.ObjectMeta.Namespace, resources.GetJenkinsHTTPServiceName(r.jenkins), r.jenkins.Spec.Service.Port, r.local, r.minikube)
|
r.jenkins.ObjectMeta.Namespace, resources.GetJenkinsHTTPServiceName(r.jenkins), r.jenkins.Spec.Service.Port, r.local, r.minikube)
|
||||||
|
|
||||||
|
if prefix, ok := GetJenkinsOpts(r.jenkins)["prefix"]; ok {
|
||||||
|
jenkinsURL = jenkinsURL + prefix
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,44 @@ import (
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestGetJenkinsOpts(t *testing.T) {
|
||||||
|
envs := []corev1.EnvVar{
|
||||||
|
{Name: "JENKINS_OPTS", Value: "--prefix=/jenkins --httpPort=8080"},
|
||||||
|
}
|
||||||
|
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
Containers: []v1alpha2.Container{
|
||||||
|
{
|
||||||
|
Env: envs,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := GetJenkinsOpts(jenkins)
|
||||||
|
|
||||||
|
t.Run("equal env vars", func(t *testing.T) {
|
||||||
|
assert.Equal(t, opts["prefix"], "/jenkins")
|
||||||
|
assert.Equal(t, opts["httpPort"], "8080")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("not equal env vars", func(t *testing.T) {
|
||||||
|
assert.NotEqual(t, opts["prefix"], "/jenkins_not_equal")
|
||||||
|
assert.NotEqual(t, opts["httpPort"], "80808")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("should exists", func(t *testing.T) {
|
||||||
|
assert.Contains(t, opts, "httpPort")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("should exists", func(t *testing.T) {
|
||||||
|
assert.NotContains(t, opts, "should_not_exists")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestCompareContainerVolumeMounts(t *testing.T) {
|
func TestCompareContainerVolumeMounts(t *testing.T) {
|
||||||
t.Run("happy with service account", func(t *testing.T) {
|
t.Run("happy with service account", func(t *testing.T) {
|
||||||
expectedContainer := corev1.Container{
|
expectedContainer := corev1.Container{
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@ package jenkins
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"github.com/go-logr/logr"
|
||||||
|
|
||||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||||
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
|
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
|
||||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base"
|
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base"
|
||||||
|
|
@ -16,8 +15,6 @@ import (
|
||||||
"github.com/jenkinsci/kubernetes-operator/pkg/event"
|
"github.com/jenkinsci/kubernetes-operator/pkg/event"
|
||||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||||
"github.com/jenkinsci/kubernetes-operator/version"
|
"github.com/jenkinsci/kubernetes-operator/version"
|
||||||
|
|
||||||
"github.com/go-logr/logr"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
|
@ -27,6 +24,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
|
"reflect"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/controller"
|
"sigs.k8s.io/controller-runtime/pkg/controller"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/handler"
|
"sigs.k8s.io/controller-runtime/pkg/handler"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue