mirror of
https://github.com/jenkinsci/kubernetes-operator.git
synced 2026-10-21 04:23:25 +02:00
Merge branch 'openshift'
# Conflicts: # docs/docs/developer-guide/index.html # docs/docs/developer-guide/tools/index.html # docs/docs/getting-started/index.html # docs/docs/getting-started/latest/aks/index.html # docs/docs/getting-started/latest/configuration/index.html # docs/docs/getting-started/latest/configure-backup-and-restore/index.html # docs/docs/getting-started/latest/custom-backup-and-restore/index.html # docs/docs/getting-started/latest/customization/index.html # docs/docs/getting-started/latest/deploy-jenkins/index.html # docs/docs/getting-started/latest/diagnostics/index.html # docs/docs/getting-started/latest/index.html # docs/docs/getting-started/latest/schema/index.html # docs/docs/getting-started/v0.1.x/aks/index.html # docs/docs/getting-started/v0.1.x/configuration/index.html # docs/docs/getting-started/v0.1.x/configure-backup-and-restore/index.html # docs/docs/getting-started/v0.1.x/customization/index.html # docs/docs/getting-started/v0.1.x/deploy-jenkins/index.html # docs/docs/getting-started/v0.1.x/diagnostics/index.html # docs/docs/getting-started/v0.1.x/index.html # docs/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/index.html # docs/docs/getting-started/v0.1.x/scheme/index.html # docs/docs/getting-started/v0.2.x/migration/index.html # docs/docs/how-it-works/architecture-and-design/index.html # docs/docs/how-it-works/index.html # docs/docs/how-it-works/jenkins-docker-images/index.html # docs/docs/index.html # docs/docs/index.xml # docs/docs/installation/index.html # docs/docs/security/index.html # docs/sitemap.xml
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
@@ -63,6 +61,13 @@ type jenkins struct {
|
||||
gojenkins.Jenkins
|
||||
}
|
||||
|
||||
// JenkinsAPIConnectionSettings is struct that handle information about Jenkins API connection
|
||||
type JenkinsAPIConnectionSettings struct {
|
||||
Hostname string
|
||||
Port int
|
||||
UseNodePort bool
|
||||
}
|
||||
|
||||
// CreateOrUpdateJob creates or updates a job from config
|
||||
func (jenkins *jenkins) CreateOrUpdateJob(config, jobName string) (job *gojenkins.Job, created bool, err error) {
|
||||
// create or update
|
||||
@@ -80,34 +85,33 @@ func (jenkins *jenkins) CreateOrUpdateJob(config, jobName string) (job *gojenkin
|
||||
}
|
||||
|
||||
// BuildJenkinsAPIUrl returns Jenkins API URL
|
||||
func BuildJenkinsAPIUrl(namespace, serviceName string, portNumber int32, local, minikube bool) (string, error) {
|
||||
// Get Jenkins URL from minikube command
|
||||
if local && minikube {
|
||||
cmd := exec.Command("minikube", "service", "--url", "-n", namespace, serviceName)
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
lines := strings.Split(out.String(), "\n")
|
||||
// First is for http, the second one is for Jenkins slaves communication
|
||||
// see pkg/controller/jenkins/configuration/base/resources/service.go
|
||||
url := lines[0]
|
||||
if strings.HasPrefix(url, "* ") {
|
||||
return url[2:], nil
|
||||
}
|
||||
|
||||
return url, nil
|
||||
func (j JenkinsAPIConnectionSettings) BuildJenkinsAPIUrl(serviceName string, serviceNamespace string, servicePort int32, serviceNodePort int32) string {
|
||||
if j.Hostname == "" && j.Port == 0 {
|
||||
return fmt.Sprintf("http://%s.%s:%d", serviceName, serviceNamespace, servicePort)
|
||||
}
|
||||
|
||||
if local {
|
||||
// When run locally make port-forward to jenkins pod ('kubectl -n default port-forward jenkins-operator-example 8080')
|
||||
return fmt.Sprintf("http://localhost:%d", portNumber), nil
|
||||
if j.Hostname != "" && j.UseNodePort {
|
||||
return fmt.Sprintf("http://%s:%d", j.Hostname, serviceNodePort)
|
||||
}
|
||||
|
||||
// Connect through Kubernetes service, operator has to be run inside cluster
|
||||
return fmt.Sprintf("http://%s.%s:%d", serviceName, namespace, portNumber), nil
|
||||
return fmt.Sprintf("http://%s:%d", j.Hostname, j.Port)
|
||||
}
|
||||
|
||||
// Validate validates jenkins API connection settings
|
||||
func (j JenkinsAPIConnectionSettings) Validate() error {
|
||||
if j.Port > 0 && j.UseNodePort {
|
||||
return errors.New("can't use service port and nodePort both. Please use port or nodePort")
|
||||
}
|
||||
|
||||
if j.Port < 0 {
|
||||
return errors.New("service port cannot be lower than 0")
|
||||
}
|
||||
|
||||
if (j.Hostname == "" && j.Port > 0) || (j.Hostname == "" && j.UseNodePort) {
|
||||
return errors.New("empty hostname is now allowed. Please provide hostname")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// New creates Jenkins API client
|
||||
|
||||
@@ -41,19 +41,18 @@ const (
|
||||
// ReconcileJenkinsBaseConfiguration defines values required for Jenkins base configuration
|
||||
type ReconcileJenkinsBaseConfiguration struct {
|
||||
configuration.Configuration
|
||||
logger logr.Logger
|
||||
local, minikube bool
|
||||
config *rest.Config
|
||||
logger logr.Logger
|
||||
jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings
|
||||
config *rest.Config
|
||||
}
|
||||
|
||||
// New create structure which takes care of base configuration
|
||||
func New(config configuration.Configuration, logger logr.Logger, local, minikube bool, restConfig *rest.Config) *ReconcileJenkinsBaseConfiguration {
|
||||
func New(config configuration.Configuration, logger logr.Logger, jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings, restConfig *rest.Config) *ReconcileJenkinsBaseConfiguration {
|
||||
return &ReconcileJenkinsBaseConfiguration{
|
||||
Configuration: config,
|
||||
logger: logger,
|
||||
local: local,
|
||||
minikube: minikube,
|
||||
config: restConfig,
|
||||
Configuration: config,
|
||||
logger: logger,
|
||||
jenkinsAPIConnectionSettings: jenkinsAPIConnectionSettings,
|
||||
config: restConfig,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -800,16 +799,23 @@ func (r *ReconcileJenkinsBaseConfiguration) waitForJenkins() (reconcile.Result,
|
||||
}
|
||||
|
||||
func (r *ReconcileJenkinsBaseConfiguration) ensureJenkinsClient() (jenkinsclient.Jenkins, error) {
|
||||
jenkinsURL, err := jenkinsclient.BuildJenkinsAPIUrl(
|
||||
r.Configuration.Jenkins.ObjectMeta.Namespace, resources.GetJenkinsHTTPServiceName(r.Configuration.Jenkins), r.Configuration.Jenkins.Spec.Service.Port, r.local, r.minikube)
|
||||
var service corev1.Service
|
||||
|
||||
err := r.Client.Get(context.TODO(), types.NamespacedName{
|
||||
Namespace: r.Configuration.Jenkins.ObjectMeta.Namespace,
|
||||
Name: resources.GetJenkinsHTTPServiceName(r.Configuration.Jenkins),
|
||||
}, &service)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
jenkinsURL := r.jenkinsAPIConnectionSettings.BuildJenkinsAPIUrl(service.Name, service.Namespace, service.Spec.Ports[0].Port, service.Spec.Ports[0].NodePort)
|
||||
|
||||
if prefix, ok := GetJenkinsOpts(*r.Configuration.Jenkins)["prefix"]; ok {
|
||||
jenkinsURL = jenkinsURL + prefix
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
r.logger.V(log.VDebug).Info(fmt.Sprintf("Jenkins API URL '%s'", jenkinsURL))
|
||||
|
||||
credentialsSecret := &corev1.Secret{}
|
||||
|
||||
@@ -234,7 +234,7 @@ func TestCompareVolumes(t *testing.T) {
|
||||
Volumes: resources.GetJenkinsMasterPodBaseVolumes(jenkins),
|
||||
},
|
||||
}
|
||||
reconciler := New(configuration.Configuration{Jenkins: jenkins}, nil, false, false, nil)
|
||||
reconciler := New(configuration.Configuration{Jenkins: jenkins}, nil, client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got := reconciler.compareVolumes(pod)
|
||||
|
||||
@@ -258,7 +258,7 @@ func TestCompareVolumes(t *testing.T) {
|
||||
Volumes: resources.GetJenkinsMasterPodBaseVolumes(jenkins),
|
||||
},
|
||||
}
|
||||
reconciler := New(configuration.Configuration{Jenkins: jenkins}, nil, false, false, nil)
|
||||
reconciler := New(configuration.Configuration{Jenkins: jenkins}, nil, client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got := reconciler.compareVolumes(pod)
|
||||
|
||||
@@ -282,7 +282,7 @@ func TestCompareVolumes(t *testing.T) {
|
||||
Volumes: append(resources.GetJenkinsMasterPodBaseVolumes(jenkins), corev1.Volume{Name: "added"}),
|
||||
},
|
||||
}
|
||||
reconciler := New(configuration.Configuration{Jenkins: jenkins}, nil, false, false, nil)
|
||||
reconciler := New(configuration.Configuration{Jenkins: jenkins}, nil, client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got := reconciler.compareVolumes(pod)
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
|
||||
@@ -23,7 +24,7 @@ import (
|
||||
|
||||
func TestValidatePlugins(t *testing.T) {
|
||||
log.SetupLogger(true)
|
||||
baseReconcileLoop := New(configuration.Configuration{}, log.Log, false, false, nil)
|
||||
baseReconcileLoop := New(configuration.Configuration{}, log.Log, client.JenkinsAPIConnectionSettings{}, nil)
|
||||
t.Run("empty", func(t *testing.T) {
|
||||
var requiredBasePlugins []plugins.Plugin
|
||||
var basePlugins []v1alpha2.Plugin
|
||||
@@ -166,7 +167,7 @@ func TestReconcileJenkinsBaseConfiguration_validateImagePullSecrets(t *testing.T
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateImagePullSecrets()
|
||||
fmt.Println(got)
|
||||
@@ -190,7 +191,7 @@ func TestReconcileJenkinsBaseConfiguration_validateImagePullSecrets(t *testing.T
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: &jenkins,
|
||||
}, nil, false, false, nil)
|
||||
}, nil, client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, _ := baseReconcileLoop.validateImagePullSecrets()
|
||||
|
||||
@@ -226,7 +227,7 @@ func TestReconcileJenkinsBaseConfiguration_validateImagePullSecrets(t *testing.T
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: &jenkins,
|
||||
}, nil, false, false, nil)
|
||||
}, nil, client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, _ := baseReconcileLoop.validateImagePullSecrets()
|
||||
|
||||
@@ -262,7 +263,7 @@ func TestReconcileJenkinsBaseConfiguration_validateImagePullSecrets(t *testing.T
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, _ := baseReconcileLoop.validateImagePullSecrets()
|
||||
|
||||
@@ -298,7 +299,7 @@ func TestReconcileJenkinsBaseConfiguration_validateImagePullSecrets(t *testing.T
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, _ := baseReconcileLoop.validateImagePullSecrets()
|
||||
|
||||
@@ -334,7 +335,7 @@ func TestReconcileJenkinsBaseConfiguration_validateImagePullSecrets(t *testing.T
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, _ := baseReconcileLoop.validateImagePullSecrets()
|
||||
|
||||
@@ -367,7 +368,7 @@ func TestValidateJenkinsMasterPodEnvs(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateJenkinsMasterPodEnvs()
|
||||
assert.Nil(t, got)
|
||||
})
|
||||
@@ -390,7 +391,7 @@ func TestValidateJenkinsMasterPodEnvs(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateJenkinsMasterPodEnvs()
|
||||
|
||||
assert.Equal(t, got, []string{"Jenkins Master container env 'JAVA_OPTS' doesn't have required flag '-Djava.awt.headless=true'"})
|
||||
@@ -414,7 +415,7 @@ func TestValidateJenkinsMasterPodEnvs(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateJenkinsMasterPodEnvs()
|
||||
|
||||
assert.Equal(t, got, []string{"Jenkins Master container env 'JAVA_OPTS' doesn't have required flag '-Djenkins.install.runSetupWizard=false'"})
|
||||
@@ -436,7 +437,7 @@ func TestValidateReservedVolumes(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateReservedVolumes()
|
||||
assert.Nil(t, got)
|
||||
})
|
||||
@@ -454,7 +455,7 @@ func TestValidateReservedVolumes(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateReservedVolumes()
|
||||
|
||||
assert.Equal(t, got, []string{"Jenkins Master pod volume 'jenkins-home' is reserved please choose different one"})
|
||||
@@ -470,7 +471,7 @@ func TestValidateContainerVolumeMounts(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateContainerVolumeMounts(v1alpha2.Container{})
|
||||
assert.Nil(t, got)
|
||||
})
|
||||
@@ -498,7 +499,7 @@ func TestValidateContainerVolumeMounts(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateContainerVolumeMounts(jenkins.Spec.Master.Containers[0])
|
||||
assert.Nil(t, got)
|
||||
})
|
||||
@@ -526,7 +527,7 @@ func TestValidateContainerVolumeMounts(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateContainerVolumeMounts(jenkins.Spec.Master.Containers[0])
|
||||
assert.Equal(t, got, []string{"mountPath not set for 'example' volume mount in container ''"})
|
||||
})
|
||||
@@ -549,7 +550,7 @@ func TestValidateContainerVolumeMounts(t *testing.T) {
|
||||
}
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: &jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got := baseReconcileLoop.validateContainerVolumeMounts(jenkins.Spec.Master.Containers[0])
|
||||
|
||||
assert.Equal(t, got, []string{"Not found volume for 'missing-volume' volume mount in container ''"})
|
||||
@@ -571,7 +572,7 @@ func TestValidateConfigMapVolume(t *testing.T) {
|
||||
fakeClient := fake.NewFakeClient()
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateConfigMapVolume(volume)
|
||||
|
||||
@@ -599,7 +600,7 @@ func TestValidateConfigMapVolume(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateConfigMapVolume(volume)
|
||||
|
||||
@@ -625,7 +626,7 @@ func TestValidateConfigMapVolume(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateConfigMapVolume(volume)
|
||||
|
||||
@@ -650,7 +651,7 @@ func TestValidateSecretVolume(t *testing.T) {
|
||||
fakeClient := fake.NewFakeClient()
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateSecretVolume(volume)
|
||||
|
||||
@@ -676,7 +677,7 @@ func TestValidateSecretVolume(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateSecretVolume(volume)
|
||||
|
||||
@@ -700,7 +701,7 @@ func TestValidateSecretVolume(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Client: fakeClient,
|
||||
Jenkins: jenkins,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
got, err := baseReconcileLoop.validateSecretVolume(volume)
|
||||
|
||||
assert.NoError(t, err)
|
||||
@@ -724,7 +725,7 @@ func TestValidateCustomization(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: jenkins,
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
|
||||
got, err := baseReconcileLoop.validateCustomization(customization, "spec.groovyScripts")
|
||||
|
||||
@@ -746,7 +747,7 @@ func TestValidateCustomization(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: jenkins,
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
err := fakeClient.Create(context.TODO(), secret)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -777,7 +778,7 @@ func TestValidateCustomization(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: jenkins,
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
err := fakeClient.Create(context.TODO(), secret)
|
||||
require.NoError(t, err)
|
||||
err = fakeClient.Create(context.TODO(), configMap)
|
||||
@@ -804,7 +805,7 @@ func TestValidateCustomization(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: jenkins,
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
err := fakeClient.Create(context.TODO(), configMap)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -829,7 +830,7 @@ func TestValidateCustomization(t *testing.T) {
|
||||
baseReconcileLoop := New(configuration.Configuration{
|
||||
Jenkins: jenkins,
|
||||
Client: fakeClient,
|
||||
}, logf.ZapLogger(false), false, false, nil)
|
||||
}, logf.ZapLogger(false), client.JenkinsAPIConnectionSettings{}, nil)
|
||||
err := fakeClient.Create(context.TODO(), secret)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
@@ -47,20 +47,19 @@ var reconcileErrors = map[string]reconcileError{}
|
||||
|
||||
// Add creates a new Jenkins Controller and adds it to the Manager. The Manager will set fields on the Controller
|
||||
// and Start it when the Manager is Started.
|
||||
func Add(mgr manager.Manager, local, minikube bool, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) error {
|
||||
return add(mgr, newReconciler(mgr, local, minikube, clientSet, config, notificationEvents))
|
||||
func Add(mgr manager.Manager, jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) error {
|
||||
return add(mgr, newReconciler(mgr, jenkinsAPIConnectionSettings, clientSet, config, notificationEvents))
|
||||
}
|
||||
|
||||
// newReconciler returns a new reconcile.Reconciler
|
||||
func newReconciler(mgr manager.Manager, local, minikube bool, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) reconcile.Reconciler {
|
||||
func newReconciler(mgr manager.Manager, jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) reconcile.Reconciler {
|
||||
return &ReconcileJenkins{
|
||||
client: mgr.GetClient(),
|
||||
scheme: mgr.GetScheme(),
|
||||
local: local,
|
||||
minikube: minikube,
|
||||
clientSet: clientSet,
|
||||
config: config,
|
||||
notificationEvents: notificationEvents,
|
||||
client: mgr.GetClient(),
|
||||
scheme: mgr.GetScheme(),
|
||||
jenkinsAPIConnectionSettings: jenkinsAPIConnectionSettings,
|
||||
clientSet: clientSet,
|
||||
config: config,
|
||||
notificationEvents: notificationEvents,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,12 +113,12 @@ var _ reconcile.Reconciler = &ReconcileJenkins{}
|
||||
|
||||
// ReconcileJenkins reconciles a Jenkins object
|
||||
type ReconcileJenkins struct {
|
||||
client client.Client
|
||||
scheme *runtime.Scheme
|
||||
local, minikube bool
|
||||
clientSet kubernetes.Clientset
|
||||
config rest.Config
|
||||
notificationEvents *chan event.Event
|
||||
client client.Client
|
||||
scheme *runtime.Scheme
|
||||
jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings
|
||||
clientSet kubernetes.Clientset
|
||||
config rest.Config
|
||||
notificationEvents *chan event.Event
|
||||
}
|
||||
|
||||
// Reconcile it's a main reconciliation loop which maintain desired state based on Jenkins.Spec
|
||||
@@ -236,7 +235,7 @@ func (r *ReconcileJenkins) reconcile(request reconcile.Request, logger logr.Logg
|
||||
}
|
||||
|
||||
// Reconcile base configuration
|
||||
baseConfiguration := base.New(config, logger, r.local, r.minikube, &r.config)
|
||||
baseConfiguration := base.New(config, logger, r.jenkinsAPIConnectionSettings, &r.config)
|
||||
|
||||
var baseMessages []string
|
||||
baseMessages, err = baseConfiguration.Validate(jenkins)
|
||||
@@ -446,13 +445,10 @@ func (r *ReconcileJenkins) setDefaults(jenkins *v1alpha2.Jenkins, logger logr.Lo
|
||||
if reflect.DeepEqual(jenkins.Spec.Service, v1alpha2.Service{}) {
|
||||
logger.Info("Setting default Jenkins master service")
|
||||
changed = true
|
||||
var serviceType corev1.ServiceType
|
||||
if r.minikube {
|
||||
// When running locally with minikube cluster Jenkins Service have to be exposed via node port
|
||||
// to allow communication operator -> Jenkins API
|
||||
|
||||
var serviceType = corev1.ServiceTypeClusterIP
|
||||
if r.jenkinsAPIConnectionSettings.UseNodePort {
|
||||
serviceType = corev1.ServiceTypeNodePort
|
||||
} else {
|
||||
serviceType = corev1.ServiceTypeClusterIP
|
||||
}
|
||||
jenkins.Spec.Service = v1alpha2.Service{
|
||||
Type: serviceType,
|
||||
|
||||
Reference in New Issue
Block a user