Giter Site home page Giter Site logo

virtuslab / jenkins-operator Goto Github PK

View Code? Open in Web Editor NEW
82.0 17.0 251.0 2.26 MB

Kubernetes native Jenkins Operator, moved to https://github.com/jenkinsci/kubernetes-operator

License: Apache License 2.0

Dockerfile 0.06% Go 94.08% Makefile 5.05% Groovy 0.81%
kubernetes jenkins operator cloud-native continous-integration

jenkins-operator's Introduction

jenkins-operator's People

Contributors

antoniaklja avatar jakubmikusek avatar pawelprazak avatar placydo avatar tomaszsek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jenkins-operator's Issues

make deepcopy-get doesn't work

unfortunately make deepcopy-gen doesn't work for some reason:

bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ make deepcopy-gen 
+ deepcopy-gen
vendor/k8s.io/code-generator/generate-groups.sh \
	deepcopy \
	jenkins-operator/pkg/generated \
	jenkins-operator/pkg/apis \
	jenkins:v1alpha1 \
	--go-header-file "./pkg/boilerplate.go.txt"
Generating deepcopy funcs
F1218 22:04:10.233113   31180 main.go:81] Error: Failed making a parser: unable to add directory "jenkins-operator/pkg/apis/jenkins/v1alpha1": unable to import "jenkins-operator/pkg/apis/jenkins/v1alpha1": cannot find package "jenkins-operator/pkg/apis/jenkins/v1alpha1" in any of:
	/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/jenkins-operator/pkg/apis/jenkins/v1alpha1 (vendor tree)
	/usr/local/go/src/jenkins-operator/pkg/apis/jenkins/v1alpha1 (from $GOROOT)
	/home/bartek/go/src/jenkins-operator/pkg/apis/jenkins/v1alpha1 (from $GOPATH)
Makefile:318: recipe for target 'deepcopy-gen' failed
make: *** [deepcopy-gen] Error 255

as an alternative we can run:

bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ operator-sdk generate k8s
INFO[0000] Running code-generation for Custom Resource group versions: [virtuslab:v1alpha1, ] 
Generating deepcopy funcs
INFO[0001] Code-generation complete.    

jenkins-operator always create delete jenkins pod

k8s:1.11.3
OS:centos 7.4

[root@k8s11-1 deploy]# kubectl get pod --watch
NAME                               READY     STATUS        RESTARTS   AGE
jenkins-operator-b85d8f6d6-gr5k5   1/1       Running       0          29m
jenkins-operator-jenkins           0/1       Terminating   0          19s
jenkins-operator-jenkins   0/1       Terminating   0         36s
jenkins-operator-jenkins   0/1       Terminating   0         36s
jenkins-operator-jenkins   0/1       Pending   0         0s
jenkins-operator-jenkins   0/1       Pending   0         0s
jenkins-operator-jenkins   0/1       ContainerCreating   0         0s
jenkins-operator-jenkins   0/1       Terminating   0         0s
jenkins-operator-jenkins   0/1       Terminating   0         1s
jenkins-operator-jenkins   0/1       Terminating   0         3s
jenkins-operator-jenkins   0/1       Terminating   0         3s
jenkins-operator-jenkins   0/1       Pending   0         0s
jenkins-operator-jenkins   0/1       Pending   0         0s
jenkins-operator-jenkins   0/1       ContainerCreating   0         0s
jenkins-operator-jenkins   0/1       Running   0         1s
jenkins-operator-jenkins   0/1       Terminating   0         1s

LOGS:

Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455674.563734,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455674.6727197,"logger":"controller-jenkins","caller":"base/reconcile.go:279","msg":"Creating a new Jenkins Master Pod jenkins/jenkins-operator-jenkins","cr":"jenkins"}
{"level":"info","ts":1547455674.6908698,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455675.5965106,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455675.596552,"logger":"controller-jenkins","caller":"base/reconcile.go:323","msg":"Terminating Jenkins Master Pod jenkins/jenkins-operator-jenkins","cr":"jenkins"}
{"level":"info","ts":1547455675.6036487,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455676.7761467,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455676.7762403,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455677.9779878,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455679.0004437,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455679.1646795,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455684.1649616,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455684.2707777,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455689.2710345,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455689.5237415,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455694.5240242,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455694.8964834,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}
{"level":"info","ts":1547455699.8968675,"logger":"controller-jenkins","caller":"jenkins/jenkins_controller.go:90","msg":"Reconciling Jenkins","cr":"jenkins"}
{"level":"info","ts":1547455699.9947703,"logger":"controller-jenkins","caller":"base/reconcile.go:318","msg":"Jenkins pod resources have changed to '{Limits:map[] Requests:map[]}', recreating pod","cr":"jenkins"}

troubles with make e2e

I'm having some troubles with running e2e tests:

bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ make e2e E2E_IMAGE=jenkins-operator
+ e2e
E2E_IMAGE: jenkins-operator
cp deploy/service_account.yaml deploy/namespace-init.yaml
cat deploy/role.yaml >> deploy/namespace-init.yaml
cat deploy/role_binding.yaml >> deploy/namespace-init.yaml
cat deploy/operator.yaml >> deploy/namespace-init.yaml
sed -i 's|REPLACE_IMAGE|jenkins-operator|g' deploy/namespace-init.yaml
sed -i 's|imagePullPolicy: IfNotPresent|imagePullPolicy: Never|g' deploy/namespace-init.yaml
sed -i 's|REPLACE_ARGS|args: ["--minikube"]|g' deploy/namespace-init.yaml
=== RUN   TestBaseConfiguration
=== PAUSE TestBaseConfiguration
=== RUN   TestJenkinsMasterPodRestart
=== PAUSE TestJenkinsMasterPodRestart
=== RUN   TestUserConfiguration
=== PAUSE TestUserConfiguration
=== CONT  TestBaseConfiguration
--- FAIL: TestBaseConfiguration (120.13s)
	main_test.go:47: Test namespace 'baseconfiguration-1545236552'
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
	wait_util.go:61: Waiting for full availability of jenkins-operator deployment (0/1)
bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ kubectl get po --all-namespaces
NAMESPACE                            NAME                                    READY   STATUS              RESTARTS   AGE
baseconfiguration-1545236552         jenkins-operator-6b65b4bd79-4rvkf       0/1     ErrImageNeverPull   0          4m
jenkinsmasterpodrestart-1545236793   jenkins-operator-6b65b4bd79-rvtrz       0/1     ErrImageNeverPull   0          57s
kube-system                          etcd-minikube                           1/1     Running             0          5m
kube-system                          kube-addon-manager-minikube             1/1     Running             4          4d
kube-system                          kube-apiserver-minikube                 1/1     Running             0          5m
kube-system                          kube-controller-manager-minikube        1/1     Running             0          5m
kube-system                          kube-dns-86f4d74b45-67xrq               3/3     Running             15         4d
kube-system                          kube-proxy-6wwbv                        1/1     Running             0          4m
kube-system                          kube-scheduler-minikube                 1/1     Running             2          20h
kube-system                          kubernetes-dashboard-6f4cfc5d87-l8x58   1/1     Running             11         4d
kube-system                          storage-provisioner                     1/1     Running             11         4d
userconfiguration-1545236672         jenkins-operator-6b65b4bd79-8czvp       0/1     ErrImageNeverPull   0          2m

docker images are available on minikube (I run eval $(minikube docker-env) before)

bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ minikube ssh docker images | column -t
REPOSITORY                                TAG            IMAGE         ID  CREATED  SIZE
jenkins-operator                          7e64f2f-dirty  e0a4938b9d8b  20  minutes  ago   31.5MB
jenkins/jenkins                           latest         b98274c3cead  2   days     ago   701MB
jenkins/jenkins                           <none>         075942aab94d  9   days     ago   701MB
k8s.gcr.io/kube-proxy-amd64               v1.10.9        3eb53757e3db  2   months   ago   98.3MB
k8s.gcr.io/kube-controller-manager-amd64  v1.10.9        a0e5065bdee0  2   months   ago   151MB
k8s.gcr.io/kube-scheduler-amd64           v1.10.9        a8706603e59d  2   months   ago   51.2MB
k8s.gcr.io/kube-apiserver-amd64           v1.10.9        f8187c0f74c8  2   months   ago   228MB
alpine                                    3.8            196d12cf6ab1  3   months   ago   4.41MB
k8s.gcr.io/kubernetes-dashboard-amd64     v1.10.0        0dab2435c100  3   months   ago   122MB
k8s.gcr.io/etcd-amd64                     3.1.12         52920ad46f5b  9   months   ago   193MB
k8s.gcr.io/kube-addon-manager             v8.6           9c16409588eb  10  months   ago   78.4MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64    1.14.8         c2ce1ffb51ed  11  months   ago   41MB
k8s.gcr.io/k8s-dns-sidecar-amd64          1.14.8         6f7f2dc7fab5  11  months   ago   42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64         1.14.8         80cc5ea4b547  11  months   ago   50.5MB
k8s.gcr.io/pause-amd64                    3.1            da86e6ba6ca1  12  months   ago   742kB
gcr.io/k8s-minikube/storage-provisioner   v1.8.1         4689081edb10  13  months   ago   80.8MB

make minikube-run doesn't load CRD file

make minikube-run target should load CRD file

bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ make minikube-run EXTRA_ARGS='--minikube --local'
+ start-minikube
host: 
kubelet: 
apiserver: 
kubectl: Starting local Kubernetes v1.10.9 cluster...
Starting VM...
Getting VM IP address...
E1215 09:37:18.547039   28361 start.go:210] Error parsing version semver:  Version string empty
Moving files into cluster...
Downloading kubeadm v1.10.9
Downloading kubelet v1.10.9
Finished Downloading kubelet v1.10.9
Finished Downloading kubeadm v1.10.9
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Stopping extra container runtimes...
Starting cluster components...
Verifying kubelet health ...
Verifying apiserver health ...Kubectl is now configured to use the cluster.
Loading cached images from config file.


Everything looks great. Please enjoy minikube!
+ minikube-run
kubectl config use-context minikube
Switched to context "minikube".
build/_output/bin/jenkins-operator --minikube --local
{"level":"info","ts":1544863182.8541842,"logger":"jenkins-operator","caller":"manager/main.go:24","msg":"Version: v0.0.1"}
{"level":"info","ts":1544863182.854326,"logger":"jenkins-operator","caller":"manager/main.go:25","msg":"Git commit: 3816548"}
{"level":"info","ts":1544863182.854373,"logger":"jenkins-operator","caller":"manager/main.go:26","msg":"Go Version: go1.10.3"}
{"level":"info","ts":1544863182.854407,"logger":"jenkins-operator","caller":"manager/main.go:27","msg":"Go OS/Arch: linux/amd64"}
{"level":"info","ts":1544863182.8544157,"logger":"jenkins-operator","caller":"manager/main.go:28","msg":"operator-sdk Version: v0.1.0"}
{"level":"info","ts":1544863182.8544252,"logger":"jenkins-operator","caller":"manager/main.go:45","msg":"watch namespace: default"}
INFO[0000] Metrics service jenkins-operator created     
{"level":"info","ts":1544863182.9268897,"logger":"jenkins-operator","caller":"manager/main.go:63","msg":"Registering Components."}
{"level":"info","ts":1544863182.9269874,"logger":"jenkins-operator.kubebuilder.controller","caller":"controller/controller.go:120","msg":"Starting EventSource","Controller":"jenkins-controller","Source":"kind source: /, Kind="}
{"level":"dpanic","ts":1544863182.9270742,"logger":"jenkins-operator.kubebuilder.source","caller":"zapr/zapr.go:129","msg":"odd number of arguments passed as key-value pairs for logging","ignored key":{"Group":"virtuslab.com","Kind":"Jenkins"},"stacktrace":"github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr.handleFields\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr/zapr.go:106\ngithub.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr.(*zapLogger).Error\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr/zapr.go:129\ngithub.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/source.(*Kind).Start\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/source/source.go:89\ngithub.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Watch\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:121\ngithub.com/VirtusLab/jenkins-operator/pkg/controller/jenkins.add\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/jenkins_controller.go:48\ngithub.com/VirtusLab/jenkins-operator/pkg/controller/jenkins.Add\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/jenkins_controller.go:26\ngithub.com/VirtusLab/jenkins-operator/pkg/controller.AddToManager\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/pkg/controller/controller.go:13\nmain.main\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/cmd/manager/main.go:72\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:198"}
{"level":"error","ts":1544863182.927041,"logger":"jenkins-operator.kubebuilder.source","caller":"source/source.go:89","msg":"if %s is a CRD, should install it before calling Start","error":"no matches for kind \"Jenkins\" in version \"virtuslab.com/v1alpha1\"","stacktrace":"github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr.(*zapLogger).Error\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr/zapr.go:128\ngithub.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/source.(*Kind).Start\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/source/source.go:89\ngithub.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Watch\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:121\ngithub.com/VirtusLab/jenkins-operator/pkg/controller/jenkins.add\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/jenkins_controller.go:48\ngithub.com/VirtusLab/jenkins-operator/pkg/controller/jenkins.Add\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/jenkins_controller.go:26\ngithub.com/VirtusLab/jenkins-operator/pkg/controller.AddToManager\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/pkg/controller/controller.go:13\nmain.main\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/cmd/manager/main.go:72\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:198"}
{"level":"error","ts":1544863182.9271703,"logger":"jenkins-operator","caller":"manager/main.go:73","msg":"failed to setup controllers","error":"no matches for kind \"Jenkins\" in version \"virtuslab.com/v1alpha1\"","stacktrace":"github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr.(*zapLogger).Error\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/vendor/github.com/go-logr/zapr/zapr.go:128\nmain.main\n\t/home/bartek/go/src/github.com/VirtusLab/jenkins-operator/cmd/manager/main.go:73\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:198"}
Makefile:310: recipe for target 'minikube-run' failed
make: *** [minikube-run] Error 255

after I created CRD manually, minikube started sucessfully

bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
KubeDNS is running at https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   1m    v1.10.9
bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ kubectl apply -f /home/bartek/go/src/github.com/VirtusLab/jenkins-operator/deploy/crds/virtuslab_v1alpha1_jenkins_crd.yaml
customresourcedefinition.apiextensions.k8s.io/jenkins.virtuslab.com created
bartek@thinkpad:~/go/src/github.com/VirtusLab/jenkins-operator$ make minikube-run EXTRA_ARGS='--minikube --local'
+ start-minikube
host: Running
kubelet: Running
apiserver: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100+ minikube-run
kubectl config use-context minikube
Switched to context "minikube".
build/_output/bin/jenkins-operator --minikube --local
{"level":"info","ts":1544863274.9766324,"logger":"jenkins-operator","caller":"manager/main.go:24","msg":"Version: v0.0.1"}
{"level":"info","ts":1544863274.977233,"logger":"jenkins-operator","caller":"manager/main.go:25","msg":"Git commit: 3816548"}
{"level":"info","ts":1544863274.9772496,"logger":"jenkins-operator","caller":"manager/main.go:26","msg":"Go Version: go1.10.3"}
{"level":"info","ts":1544863274.9772604,"logger":"jenkins-operator","caller":"manager/main.go:27","msg":"Go OS/Arch: linux/amd64"}
{"level":"info","ts":1544863274.9772677,"logger":"jenkins-operator","caller":"manager/main.go:28","msg":"operator-sdk Version: v0.1.0"}
{"level":"info","ts":1544863274.9772766,"logger":"jenkins-operator","caller":"manager/main.go:45","msg":"watch namespace: default"}
INFO[0000] Metrics service jenkins-operator created     
{"level":"info","ts":1544863275.0492687,"logger":"jenkins-operator","caller":"manager/main.go:63","msg":"Registering Components."}
{"level":"info","ts":1544863275.0495017,"logger":"jenkins-operator.kubebuilder.controller","caller":"controller/controller.go:120","msg":"Starting EventSource","Controller":"jenkins-controller","Source":"kind source: /, Kind="}
{"level":"info","ts":1544863275.0498645,"logger":"jenkins-operator.kubebuilder.controller","caller":"controller/controller.go:120","msg":"Starting EventSource","Controller":"jenkins-controller","Source":"kind source: /, Kind="}
{"level":"info","ts":1544863275.050017,"logger":"jenkins-operator","caller":"manager/main.go:77","msg":"Starting the Cmd."}
{"level":"info","ts":1544863275.1503057,"logger":"jenkins-operator.kubebuilder.controller","caller":"controller/controller.go:134","msg":"Starting Controller","Controller":"jenkins-controller"}
{"level":"info","ts":1544863275.2505906,"logger":"jenkins-operator.kubebuilder.controller","caller":"controller/controller.go:153","msg":"Starting workers","Controller":"jenkins-controller","WorkerCount":1}

Feature Request: Support installing additional plugins

I see that you can override basePlugins in the CR yaml by specifying spec.master.plugins with something like this:

apiVersion: virtuslab.com/v1alpha1
kind: Jenkins
metadata:
  name: example
spec:
  master:
   image: jenkins/jenkins:lts
   plugins:
     configuration-as-code:1.4:
     - configuration-as-code-support:1.4
...

However, this either uses the default plugins OR the ones specified:

if len(jenkins.Spec.Master.Plugins) == 0 {
logger.Info("Setting default base plugins")
changed = true
jenkins.Spec.Master.Plugins = plugins.BasePlugins()

As far as I understand, we have two options if we want to install additional plugins or update plugins:

  1. Override spec.master.plugins with a complete list of plugins and dependencies. This makes it difficult to maintain if jenkins-operator has a new release that uses a new set of base plugins.
  2. Write custom .groovy scripts that install the needed plugins. I believe this is the current recommendation in the README.

Let me know if there is another option I'm missing.

My feature request is to add a new option spec.master.additionalPlugins that would just be merged into the default set of plugins. This would make managing plugins a little bit simpler compared to either option I listed, since only the updated or new plugins would need to be specified.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.