Skip to content

Latest commit

 

History

History
142 lines (101 loc) · 3.35 KB

developer-guide.md

File metadata and controls

142 lines (101 loc) · 3.35 KB

Developer guide

This document explains how to setup your development environment.

Prerequisites

Clone repository and download dependencies

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 with a minikube

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

Build and run with a remote Kubernetes cluster

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

Testing

Run unit tests:

make test

Running E2E tests on Linux

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$"

Running E2E tests on macOS

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

Tips & Tricks

Building docker image on minikube (for e2e tests)

To be able to work with the docker daemon on minikube machine run the following command before building an image:

eval $(minikube docker-env)

When pkg/apis/jenkinsio/*/jenkins_types.go has changed

Run:

make deepcopy-gen

Getting Jenkins URL and basic credentials

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