This document explains how to setup your development environment.
- operator_sdk version v0.8.1
- git
- go version v1.12+
- goimports, golint, checkmake and staticcheck
- minikube version v1.1.0+ (preferred Hypervisor - virtualbox)
- docker version 17.03+
mkdir -p $GOPATH/src/github.com/jenkinsci
cd $GOPATH/src/github.com/jenkinsci/
git clone [email protected]:jenkinsci/kubernetes-operator.git
cd kubernetes-operator
make go-dependencies
Build and run Jenkins Operator locally:
make minikube-run EXTRA_ARGS="--minikube --local"
Once minikube and Jenkins Operator are up and running, apply Jenkins custom resource:
kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml
kubectl get jenkins -o yaml
kubectl get po
You can also run the controller locally and make it listen to a remote Kubernetes server.
make run NAMESPACE=default KUBECTL_CONTEXT=remote-k8s EXTRA_ARGS="--kubeconfig ~/.kube/config"
Once minikube and Jenkins Operator are up and running, apply Jenkins custom resource:
kubectl --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml
kubectl --context remote-k8s --namespace default get jenkins -o yaml
kubectl --context remote-k8s --namespace default get po
Run unit tests:
make test
Run e2e tests with minikube:
make minikube-start
eval $(minikube docker-env)
make build e2e
Run the specific e2e test:
make build e2e E2E_TEST_SELECTOR="^TestConfiguration$"
At first, you need to start minikube:
$ make minikube-start
$ eval $(minikube docker-env)
Build Docker image inside provided Linux container by:
$ make indocker
Build Jenkins Operator inside container using:
$ make build
Then exit the container and run:
make e2e
To be able to work with the docker daemon on minikube
machine run the following command before building an image:
eval $(minikube docker-env)
Run:
make deepcopy-gen
minikube service jenkins-operator-http-<cr_name> --url
kubectl get secret jenkins-operator-credentials-<cr_name> -o "jsonpath={.data.user}" | base64 -d
kubectl get secret jenkins-operator-credentials-<cr_name> -o "jsonpath={.data.password}" | base64 -d