#190 Fix run Jenkins master on top of OpenShift

This commit is contained in:
Tomasz Sęk 2020-01-01 22:25:46 +01:00
parent 80a6d33b0b
commit 09b9972f40
No known key found for this signature in database
GPG Key ID: DC356D23F6A644D0
2 changed files with 40 additions and 1 deletions

View File

@ -29,6 +29,11 @@ const (
jenkinsInitConfigurationVolumeName = "init-configuration" jenkinsInitConfigurationVolumeName = "init-configuration"
jenkinsInitConfigurationVolumePath = jenkinsPath + "/init-configuration" jenkinsInitConfigurationVolumePath = jenkinsPath + "/init-configuration"
refEnvironmentName = "REF"
// RefVolumeName is the Jenkins volume with preinstalled plugins volume name
RefVolumeName = "ref"
refVolumePath = "/usr/share/jenkins/ref/plugins"
// GroovyScriptsSecretVolumePath is a path where are groovy scripts used to configure Jenkins // GroovyScriptsSecretVolumePath is a path where are groovy scripts used to configure Jenkins
// This script is provided by user // This script is provided by user
GroovyScriptsSecretVolumePath = jenkinsPath + "/groovy-scripts-secrets" GroovyScriptsSecretVolumePath = jenkinsPath + "/groovy-scripts-secrets"
@ -59,7 +64,16 @@ func GetJenkinsMasterContainerBaseCommand() []string {
// GetJenkinsMasterContainerBaseEnvs returns Jenkins master pod envs required by operator // GetJenkinsMasterContainerBaseEnvs returns Jenkins master pod envs required by operator
func GetJenkinsMasterContainerBaseEnvs(jenkins *v1alpha2.Jenkins) []corev1.EnvVar { func GetJenkinsMasterContainerBaseEnvs(jenkins *v1alpha2.Jenkins) []corev1.EnvVar {
envVars := []corev1.EnvVar{} envVars := []corev1.EnvVar{
{
Name: refEnvironmentName,
Value: refVolumePath,
},
{
Name: "COPY_REFERENCE_FILE_LOG",
Value: fmt.Sprintf("%s/%s", getJenkinsHomePath(jenkins), "copy_reference_file.log"),
},
}
if len(jenkins.Spec.ConfigurationAsCode.Secret.Name) > 0 { if len(jenkins.Spec.ConfigurationAsCode.Secret.Name) > 0 {
envVars = append(envVars, corev1.EnvVar{ envVars = append(envVars, corev1.EnvVar{
@ -169,6 +183,11 @@ func GetJenkinsMasterContainerBaseVolumeMounts(jenkins *v1alpha2.Jenkins) []core
MountPath: getJenkinsHomePath(jenkins), MountPath: getJenkinsHomePath(jenkins),
ReadOnly: false, ReadOnly: false,
}, },
{
Name: RefVolumeName,
MountPath: refVolumePath,
ReadOnly: false,
},
{ {
Name: jenkinsScriptsVolumeName, Name: jenkinsScriptsVolumeName,
MountPath: JenkinsScriptsVolumePath, MountPath: JenkinsScriptsVolumePath,

View File

@ -496,12 +496,32 @@ func (r *ReconcileJenkins) setDefaults(jenkins *v1alpha2.Jenkins, logger logr.Lo
jenkins.Spec.Master.SecurityContext = &securityContext jenkins.Spec.Master.SecurityContext = &securityContext
} }
if !refVolumeSet(*jenkins) {
logger.Info("Setting default Jenkins master volume with preinstalled plugins")
changed = true
jenkins.Spec.Master.Volumes = append(jenkins.Spec.Master.Volumes, corev1.Volume{
Name: resources.RefVolumeName,
VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{},
},
})
}
if changed { if changed {
return changed, errors.WithStack(r.client.Update(context.TODO(), jenkins)) return changed, errors.WithStack(r.client.Update(context.TODO(), jenkins))
} }
return changed, nil return changed, nil
} }
func refVolumeSet(jenkins v1alpha2.Jenkins) bool {
for _, volume := range jenkins.Spec.Master.Volumes {
if volume.Name == resources.RefVolumeName {
return true
}
}
return false
}
func isJavaOpsVariableNotSet(container v1alpha2.Container) bool { func isJavaOpsVariableNotSet(container v1alpha2.Container) bool {
for _, env := range container.Env { for _, env := range container.Env {
if env.Name == constants.JavaOpsVariableName { if env.Name == constants.JavaOpsVariableName {