Merge pull request #49 from jakalkhalili/v0.2.0
#43 Add support for JENKINS_OPTS, fix the --prefix bug
This commit is contained in:
commit
0c8462e5b4
|
|
@ -127,6 +127,32 @@ 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
|
||||||
|
if len(jenkinsOptsWithDashes) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
jenkinsOptsWithEqOperators := strings.Split(jenkinsOptsWithDashes, " ")
|
||||||
|
|
||||||
|
for _, vx := range jenkinsOptsWithEqOperators {
|
||||||
|
opt := strings.Split(vx, "=")
|
||||||
|
jenkinsOpts[strings.ReplaceAll(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 +774,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,118 @@ import (
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestGetJenkinsOpts(t *testing.T) {
|
||||||
|
t.Run("JENKINS_OPTS is uninitialized", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
Containers: []v1alpha2.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{Name: "", Value: ""},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := GetJenkinsOpts(jenkins)
|
||||||
|
assert.Equal(t, 0, len(opts))
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("JENKINS_OPTS is empty", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
Containers: []v1alpha2.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{Name: "JENKINS_OPTS", Value: ""},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := GetJenkinsOpts(jenkins)
|
||||||
|
assert.Equal(t, 0, len(opts))
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("JENKINS_OPTS have --prefix argument ", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
Containers: []v1alpha2.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{Name: "JENKINS_OPTS", Value: "--prefix=/jenkins"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := GetJenkinsOpts(jenkins)
|
||||||
|
|
||||||
|
assert.Equal(t, 1, len(opts))
|
||||||
|
assert.NotContains(t, opts, "httpPort")
|
||||||
|
assert.Contains(t, opts, "prefix")
|
||||||
|
assert.Equal(t, opts["prefix"], "/jenkins")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("JENKINS_OPTS have --prefix and --httpPort argument", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
Containers: []v1alpha2.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{Name: "JENKINS_OPTS", Value: "--prefix=/jenkins --httpPort=8080"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := GetJenkinsOpts(jenkins)
|
||||||
|
|
||||||
|
assert.Equal(t, 2, len(opts))
|
||||||
|
|
||||||
|
assert.Contains(t, opts, "prefix")
|
||||||
|
assert.Equal(t, opts["prefix"], "/jenkins")
|
||||||
|
|
||||||
|
assert.Contains(t, opts, "httpPort")
|
||||||
|
assert.Equal(t, opts["httpPort"], "8080")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("JENKINS_OPTS have --httpPort argument", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
Containers: []v1alpha2.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{Name: "JENKINS_OPTS", Value: "--httpPort=8080"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := GetJenkinsOpts(jenkins)
|
||||||
|
|
||||||
|
assert.Equal(t, 1, len(opts))
|
||||||
|
assert.NotContains(t, opts, "prefix")
|
||||||
|
assert.Contains(t, opts, "httpPort")
|
||||||
|
assert.Equal(t, opts["httpPort"], "8080")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
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{
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ func verifyJenkinsMasterPodAttributes(t *testing.T, jenkins *v1alpha2.Jenkins) {
|
||||||
|
|
||||||
assert.Equal(t, resources.JenkinsMasterContainerName, jenkinsPod.Spec.Containers[0].Name)
|
assert.Equal(t, resources.JenkinsMasterContainerName, jenkinsPod.Spec.Containers[0].Name)
|
||||||
assert.Equal(t, len(jenkins.Spec.Master.Containers), len(jenkinsPod.Spec.Containers))
|
assert.Equal(t, len(jenkins.Spec.Master.Containers), len(jenkinsPod.Spec.Containers))
|
||||||
|
|
||||||
assert.Equal(t, jenkins.Spec.Master.SecurityContext, jenkinsPod.Spec.SecurityContext)
|
assert.Equal(t, jenkins.Spec.Master.SecurityContext, jenkinsPod.Spec.SecurityContext)
|
||||||
assert.Equal(t, jenkins.Spec.Master.Containers[0].Command, jenkinsPod.Spec.Containers[0].Command)
|
assert.Equal(t, jenkins.Spec.Master.Containers[0].Command, jenkinsPod.Spec.Containers[0].Command)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue