kubernetes-operator/doc/developer-guide.md

2.5 KiB

Developer guide

This document explains how to setup your dev environment.

Prerequisites

Clone repository and download dependencies

mkdir -p $GOPATH/src/github.com/VirtusLab
cd $GOPATH/src/github.com/VirtusLab/
git clone git@github.com:VirtusLab/jenkins-operator.git
cd jenkins-operator
make go-dependecies

Build and run

Build and run jenkins-operator locally:

make build && make docker-build && make minikube-run EXTRA_ARGS='--minikube --local'

Once minikube and jenkins-operator are up and running, apply CR file:

kubectl apply -f jenkins-operator/deploy/crds/virtuslab_v1alpha1_jenkins_cr.yaml
kubectl get jenkins -o yaml
kubectl get po

Testing

Run unit tests:

make test

Run e2e tests with minikube:

make minikube-run
make docker-build-e2e
make e2e E2E_IMAGE=jenkins-operator

See the project README for more details.

Hacks

pkg/apis/virtuslab/v1alpha1/jenkins_types has changed

Generate deepcopy using operator-sdk:

operator-sdk generate k8s 

output should be simillar to:

INFO[0000] Running code-generation for Custom Resource group versions: [virtuslab:v1alpha1, ] 
Generating deepcopy funcs
INFO[0001] Code-generation complete.

Getting Jenkins URL and basic credentials

minikube service jenkins-operator-example --url
kubectl get secret jenkins-operator-credentials-example -o yaml

Install custom plugins

Extend initBashTemplate in jenkins-operator/pkg/controller/jenkins/configuration/base/resources/scripts_configmap.go:

touch {{ .JenkinsHomePath }}/plugins.txt
cat > {{ .JenkinsHomePath }}/plugins.txt <<EOL
credentials:2.1.18
ssh-credentials:1.14
job-dsl:1.70
git:3.9.1
mask-passwords:2.12.0
workflow-cps:2.61
workflow-job:2.30
workflow-aggregator:2.6
EOL