Merge pull request #204 from waveywaves/update/overridable-jenkins-home
Allow to set JENKINS_HOME env
This commit is contained in:
commit
b3f79d32df
|
|
@ -36,7 +36,7 @@ if (!operatorUserCreatedFile.exists()) {
|
|||
}
|
||||
`))
|
||||
|
||||
func buildCreateJenkinsOperatorUserGroovyScript() (*string, error) {
|
||||
func buildCreateJenkinsOperatorUserGroovyScript(jenkins *v1alpha2.Jenkins) (*string, error) {
|
||||
data := struct {
|
||||
OperatorCredentialsPath string
|
||||
OperatorUserNameFile string
|
||||
|
|
@ -46,7 +46,7 @@ func buildCreateJenkinsOperatorUserGroovyScript() (*string, error) {
|
|||
OperatorCredentialsPath: jenkinsOperatorCredentialsVolumePath,
|
||||
OperatorUserNameFile: OperatorCredentialsSecretUserNameKey,
|
||||
OperatorPasswordFile: OperatorCredentialsSecretPasswordKey,
|
||||
OperatorUserCreatedFilePath: jenkinsHomePath + "/operatorUserCreated",
|
||||
OperatorUserCreatedFilePath: getJenkinsHomePath(jenkins) + "/operatorUserCreated",
|
||||
}
|
||||
|
||||
output, err := render.Render(createOperatorUserGroovyFmtTemplate, data)
|
||||
|
|
@ -66,7 +66,7 @@ func GetInitConfigurationConfigMapName(jenkins *v1alpha2.Jenkins) string {
|
|||
func NewInitConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jenkins) (*corev1.ConfigMap, error) {
|
||||
meta.Name = GetInitConfigurationConfigMapName(jenkins)
|
||||
|
||||
createJenkinsOperatorUserGroovy, err := buildCreateJenkinsOperatorUserGroovyScript()
|
||||
createJenkinsOperatorUserGroovy, err := buildCreateJenkinsOperatorUserGroovyScript(jenkins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ const (
|
|||
// JenkinsHomeVolumeName is the Jenkins home volume name
|
||||
JenkinsHomeVolumeName = "jenkins-home"
|
||||
jenkinsPath = "/var/jenkins"
|
||||
jenkinsHomePath = jenkinsPath + "/home"
|
||||
|
||||
jenkinsScriptsVolumeName = "scripts"
|
||||
// JenkinsScriptsVolumePath is a path where are scripts used to configure Jenkins
|
||||
|
|
@ -62,12 +61,7 @@ func GetJenkinsMasterContainerBaseCommand() []string {
|
|||
|
||||
// GetJenkinsMasterContainerBaseEnvs returns Jenkins master pod envs required by operator
|
||||
func GetJenkinsMasterContainerBaseEnvs(jenkins *v1alpha2.Jenkins) []corev1.EnvVar {
|
||||
envVars := []corev1.EnvVar{
|
||||
{
|
||||
Name: "JENKINS_HOME",
|
||||
Value: jenkinsHomePath,
|
||||
},
|
||||
}
|
||||
envVars := []corev1.EnvVar{}
|
||||
|
||||
if len(jenkins.Spec.ConfigurationAsCode.Secret.Name) > 0 {
|
||||
envVars = append(envVars, corev1.EnvVar{
|
||||
|
|
@ -79,6 +73,17 @@ func GetJenkinsMasterContainerBaseEnvs(jenkins *v1alpha2.Jenkins) []corev1.EnvVa
|
|||
return envVars
|
||||
}
|
||||
|
||||
// getJenkinsHomePath fetches the Home Path for Jenkins
|
||||
func getJenkinsHomePath(jenkins *v1alpha2.Jenkins) string {
|
||||
defaultJenkinsHomePath := jenkinsPath + "/jenkins"
|
||||
for _, envVar := range jenkins.Spec.Master.Containers[0].Env {
|
||||
if envVar.Name == "JENKINS_HOME" {
|
||||
return envVar.Value
|
||||
}
|
||||
}
|
||||
return defaultJenkinsHomePath
|
||||
}
|
||||
|
||||
// GetJenkinsMasterPodBaseVolumes returns Jenkins master pod volumes required by operator
|
||||
func GetJenkinsMasterPodBaseVolumes(jenkins *v1alpha2.Jenkins) []corev1.Volume {
|
||||
configMapVolumeSourceDefaultMode := corev1.ConfigMapVolumeSourceDefaultMode
|
||||
|
|
@ -163,7 +168,7 @@ func GetJenkinsMasterContainerBaseVolumeMounts(jenkins *v1alpha2.Jenkins) []core
|
|||
volumeMounts := []corev1.VolumeMount{
|
||||
{
|
||||
Name: JenkinsHomeVolumeName,
|
||||
MountPath: jenkinsHomePath,
|
||||
MountPath: getJenkinsHomePath(jenkins),
|
||||
ReadOnly: false,
|
||||
},
|
||||
{
|
||||
|
|
@ -204,9 +209,27 @@ func GetJenkinsMasterContainerBaseVolumeMounts(jenkins *v1alpha2.Jenkins) []core
|
|||
// NewJenkinsMasterContainer returns Jenkins master Kubernetes container
|
||||
func NewJenkinsMasterContainer(jenkins *v1alpha2.Jenkins) corev1.Container {
|
||||
jenkinsContainer := jenkins.Spec.Master.Containers[0]
|
||||
|
||||
envs := GetJenkinsMasterContainerBaseEnvs(jenkins)
|
||||
envs = append(envs, jenkinsContainer.Env...)
|
||||
|
||||
jenkinsHomeEnvVar := corev1.EnvVar{
|
||||
Name: "JENKINS_HOME",
|
||||
Value: getJenkinsHomePath(jenkins),
|
||||
}
|
||||
|
||||
jenkinsHomeEnvVarExists := false
|
||||
for _, env := range jenkinsContainer.Env {
|
||||
if env.Name == jenkinsHomeEnvVar.Name {
|
||||
jenkinsHomeEnvVarExists = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !jenkinsHomeEnvVarExists {
|
||||
envs = append(envs, jenkinsHomeEnvVar)
|
||||
}
|
||||
|
||||
return corev1.Container{
|
||||
Name: JenkinsMasterContainerName,
|
||||
Image: jenkinsContainer.Image,
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ func buildInitBashScript(jenkins *v1alpha2.Jenkins) (*string, error) {
|
|||
BasePlugins []v1alpha2.Plugin
|
||||
UserPlugins []v1alpha2.Plugin
|
||||
}{
|
||||
JenkinsHomePath: jenkinsHomePath,
|
||||
JenkinsHomePath: getJenkinsHomePath(jenkins),
|
||||
InitConfigurationPath: jenkinsInitConfigurationVolumePath,
|
||||
BasePlugins: jenkins.Spec.Master.BasePlugins,
|
||||
UserPlugins: jenkins.Spec.Master.Plugins,
|
||||
|
|
@ -314,7 +314,7 @@ func NewScriptsConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jenkins) (*co
|
|||
ObjectMeta: meta,
|
||||
Data: map[string]string{
|
||||
InitScriptName: *initBashScript,
|
||||
installPluginsCommand: fmt.Sprintf(installPluginsBashFmt, jenkinsHomePath),
|
||||
installPluginsCommand: fmt.Sprintf(installPluginsBashFmt, getJenkinsHomePath(jenkins)),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -371,34 +371,6 @@ func TestValidateJenkinsMasterPodEnvs(t *testing.T) {
|
|||
got := baseReconcileLoop.validateJenkinsMasterPodEnvs()
|
||||
assert.Nil(t, got)
|
||||
})
|
||||
t.Run("override JENKINS_HOME env", func(t *testing.T) {
|
||||
jenkins := v1alpha2.Jenkins{
|
||||
Spec: v1alpha2.JenkinsSpec{
|
||||
Master: v1alpha2.JenkinsMaster{
|
||||
Containers: []v1alpha2.Container{
|
||||
{
|
||||
Env: []v1.EnvVar{
|
||||
{
|
||||
Name: "JENKINS_HOME",
|
||||
Value: "",
|
||||
},
|
||||
{
|
||||
Name: constants.JavaOpsVariableName,
|
||||
Value: validJenkinsOps,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
got := baseReconcileLoop.validateJenkinsMasterPodEnvs()
|
||||
|
||||
assert.Equal(t, got, []string{"Jenkins Master container env 'JENKINS_HOME' cannot be overridden"})
|
||||
})
|
||||
t.Run("missing -Djava.awt.headless=true in JAVA_OPTS env", func(t *testing.T) {
|
||||
jenkins := v1alpha2.Jenkins{
|
||||
Spec: v1alpha2.JenkinsSpec{
|
||||
|
|
|
|||
Loading…
Reference in New Issue