Merge pull request #59 from jakalkhalili/v0.2.0
#28 Enable groovy scripts secret loader
This commit is contained in:
commit
fd1d6ad075
|
|
@ -112,10 +112,7 @@ func (r *ReconcileUserConfiguration) ensureUserConfiguration(jenkinsClient jenki
|
|||
}
|
||||
requeue, err = groovyClient.Ensure(func(name string) bool {
|
||||
return strings.HasSuffix(name, ".groovy")
|
||||
}, func(groovyScript string) string {
|
||||
// TODO load secrets to variables
|
||||
return groovyScript
|
||||
})
|
||||
}, groovy.AddSecretsLoaderToGroovyScript(resources.GroovyScriptsSecretVolumePath))
|
||||
if err != nil {
|
||||
return reconcile.Result{}, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,17 +6,18 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/groovy"
|
||||
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/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"github.com/bndr/gojenkins"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
framework "github.com/operator-framework/operator-sdk/pkg/test"
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
func TestConfiguration(t *testing.T) {
|
||||
|
|
@ -27,6 +28,7 @@ func TestConfiguration(t *testing.T) {
|
|||
|
||||
jenkinsCRName := "e2e"
|
||||
numberOfExecutors := 6
|
||||
numberOfExecutorsEnvName := "NUMBER_OF_EXECUTORS"
|
||||
systemMessage := "Configuration as Code integration works!!!"
|
||||
systemMessageEnvName := "SYSTEM_MESSAGE"
|
||||
mySeedJob := seedJobConfig{
|
||||
|
|
@ -66,14 +68,17 @@ func TestConfiguration(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
stringData := make(map[string]string)
|
||||
stringData[systemMessageEnvName] = systemMessage
|
||||
stringData[numberOfExecutorsEnvName] = fmt.Sprintf("%d", numberOfExecutors)
|
||||
|
||||
// base
|
||||
createUserConfigurationSecret(t, namespace, systemMessageEnvName, systemMessage)
|
||||
createUserConfigurationConfigMap(t, namespace, numberOfExecutors, fmt.Sprintf("${%s}", systemMessageEnvName))
|
||||
createUserConfigurationSecret(t, namespace, stringData)
|
||||
createUserConfigurationConfigMap(t, namespace, numberOfExecutorsEnvName, fmt.Sprintf("${%s}", systemMessageEnvName))
|
||||
jenkins := createJenkinsCR(t, jenkinsCRName, namespace, &[]v1alpha2.SeedJob{mySeedJob.SeedJob}, groovyScripts, casc)
|
||||
createDefaultLimitsForContainersInNamespace(t, namespace)
|
||||
createKubernetesCredentialsProviderSecret(t, namespace, mySeedJob)
|
||||
waitForJenkinsBaseConfigurationToComplete(t, jenkins)
|
||||
|
||||
verifyJenkinsMasterPodAttributes(t, jenkins)
|
||||
client := verifyJenkinsAPIConnection(t, jenkins)
|
||||
verifyPlugins(t, client, jenkins)
|
||||
|
|
@ -84,15 +89,13 @@ func TestConfiguration(t *testing.T) {
|
|||
verifyJenkinsSeedJobs(t, client, []seedJobConfig{mySeedJob})
|
||||
}
|
||||
|
||||
func createUserConfigurationSecret(t *testing.T, namespace string, systemMessageEnvName, systemMessage string) {
|
||||
func createUserConfigurationSecret(t *testing.T, namespace string, stringData map[string]string) {
|
||||
userConfiguration := &corev1.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: userConfigurationSecretName,
|
||||
Namespace: namespace,
|
||||
},
|
||||
StringData: map[string]string{
|
||||
systemMessageEnvName: systemMessage,
|
||||
},
|
||||
StringData: stringData,
|
||||
}
|
||||
|
||||
t.Logf("User configuration secret %+v", *userConfiguration)
|
||||
|
|
@ -101,7 +104,7 @@ func createUserConfigurationSecret(t *testing.T, namespace string, systemMessage
|
|||
}
|
||||
}
|
||||
|
||||
func createUserConfigurationConfigMap(t *testing.T, namespace string, numberOfExecutors int, systemMessage string) {
|
||||
func createUserConfigurationConfigMap(t *testing.T, namespace string, numberOfExecutorsSecretKeyName string, systemMessage string) {
|
||||
userConfiguration := &corev1.ConfigMap{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: userConfigurationConfigMapName,
|
||||
|
|
@ -111,8 +114,8 @@ func createUserConfigurationConfigMap(t *testing.T, namespace string, numberOfEx
|
|||
"1-set-executors.groovy": fmt.Sprintf(`
|
||||
import jenkins.model.Jenkins
|
||||
|
||||
Jenkins.instance.setNumExecutors(%d)
|
||||
Jenkins.instance.save()`, numberOfExecutors),
|
||||
Jenkins.instance.setNumExecutors(new Integer(secrets['%s']))
|
||||
Jenkins.instance.save()`, numberOfExecutorsSecretKeyName),
|
||||
"1-casc.yaml": fmt.Sprintf(`
|
||||
jenkins:
|
||||
systemMessage: "%s"`, systemMessage),
|
||||
|
|
@ -275,6 +278,15 @@ if (!new Integer(%d).equals(Jenkins.instance.numExecutors)) {
|
|||
logs, err := jenkinsClient.ExecuteScript(checkConfigurationViaGroovyScript)
|
||||
assert.NoError(t, err, logs)
|
||||
|
||||
checkSecretLoaderViaGroovyScript := fmt.Sprintf(`
|
||||
if (!new Integer(%d).equals(new Integer(secrets['NUMBER_OF_EXECUTORS']))) {
|
||||
throw new Exception("Secret not found by given key: NUMBER_OF_EXECUTORS")
|
||||
}`, amountOfExecutors)
|
||||
|
||||
loader := groovy.AddSecretsLoaderToGroovyScript("/var/jenkins/groovy-scripts-secrets")
|
||||
logs, err = jenkinsClient.ExecuteScript(loader(checkSecretLoaderViaGroovyScript))
|
||||
assert.NoError(t, err, logs)
|
||||
|
||||
checkConfigurationAsCode := fmt.Sprintf(`
|
||||
if (!"%s".equals(Jenkins.instance.systemMessage)) {
|
||||
throw new Exception("Configuration as code failed")
|
||||
|
|
|
|||
Loading…
Reference in New Issue