Add base configuration groovy scripts job
This commit is contained in:
		
							parent
							
								
									d07ebcd507
								
							
						
					
					
						commit
						c26090dce8
					
				|  | @ -0,0 +1,73 @@ | ||||||
|  | package resources | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"text/template" | ||||||
|  | 
 | ||||||
|  | 	virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1" | ||||||
|  | 	"github.com/VirtusLab/jenkins-operator/pkg/controller/render" | ||||||
|  | 
 | ||||||
|  | 	corev1 "k8s.io/api/core/v1" | ||||||
|  | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | const createOperatorUserFileName = "createOperatorUser.groovy" | ||||||
|  | 
 | ||||||
|  | var createOperatorUserGroovyFmtTemplate = template.Must(template.New(createOperatorUserFileName).Parse(` | ||||||
|  | import hudson.security.* | ||||||
|  | 
 | ||||||
|  | def jenkins = jenkins.model.Jenkins.getInstance() | ||||||
|  | 
 | ||||||
|  | def hudsonRealm = new HudsonPrivateSecurityRealm(false) | ||||||
|  | hudsonRealm.createAccount( | ||||||
|  | 	new File('{{ .OperatorCredentialsPath }}/{{ .OperatorUserNameFile }}').text, | ||||||
|  | 	new File('{{ .OperatorCredentialsPath }}/{{ .OperatorPasswordFile }}').text) | ||||||
|  | jenkins.setSecurityRealm(hudsonRealm) | ||||||
|  | 
 | ||||||
|  | def strategy = new FullControlOnceLoggedInAuthorizationStrategy() | ||||||
|  | strategy.setAllowAnonymousRead(false) | ||||||
|  | jenkins.setAuthorizationStrategy(strategy) | ||||||
|  | jenkins.save() | ||||||
|  | `)) | ||||||
|  | 
 | ||||||
|  | func buildCreateJenkinsOperatorUserGroovyScript() (*string, error) { | ||||||
|  | 	data := struct { | ||||||
|  | 		OperatorCredentialsPath string | ||||||
|  | 		OperatorUserNameFile    string | ||||||
|  | 		OperatorPasswordFile    string | ||||||
|  | 	}{ | ||||||
|  | 		OperatorCredentialsPath: jenkinsOperatorCredentialsVolumePath, | ||||||
|  | 		OperatorUserNameFile:    OperatorCredentialsSecretUserNameKey, | ||||||
|  | 		OperatorPasswordFile:    OperatorCredentialsSecretPasswordKey, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	output, err := render.Render(createOperatorUserGroovyFmtTemplate, data) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return &output, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetBaseConfigurationConfigMapName returns name of Kubernetes config map used to base configuration
 | ||||||
|  | func GetBaseConfigurationConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) string { | ||||||
|  | 	return fmt.Sprintf("jenkins-operator-base-configuration-%s", jenkins.ObjectMeta.Name) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration
 | ||||||
|  | func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) (*corev1.ConfigMap, error) { | ||||||
|  | 	meta.Name = GetBaseConfigurationConfigMapName(jenkins) | ||||||
|  | 
 | ||||||
|  | 	createJenkinsOperatorUserGroovy, err := buildCreateJenkinsOperatorUserGroovyScript() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return &corev1.ConfigMap{ | ||||||
|  | 		TypeMeta:   buildConfigMapTypeMeta(), | ||||||
|  | 		ObjectMeta: meta, | ||||||
|  | 		Data: map[string]string{ | ||||||
|  | 			createOperatorUserFileName: *createJenkinsOperatorUserGroovy, | ||||||
|  | 		}, | ||||||
|  | 	}, nil | ||||||
|  | } | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | package constants | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | package constants | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | package jenkins | ||||||
		Loading…
	
		Reference in New Issue