Skip to content

Commit

Permalink
Merge pull request #98 from linkernetworks/hwchiu/VX-181
Browse files Browse the repository at this point in the history
Support the kubernetres in jenkins
  • Loading branch information
Hung-Wei Chiu authored Jul 16, 2018
2 parents 1b9319b + 1f1ef45 commit f247bba
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
3 changes: 2 additions & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,9 @@ pipeline {
}
stage('Test') {
steps {
withEnv(["GOPATH+AA=${env.WORKSPACE}"]) {
withEnv(["GOPATH+AA=${env.WORKSPACE}", "TEST_PROMETHEUS=1"]) {
dir ("src/github.com/linkernetworks/vortex") {
sh "make src.test-prometheus 2>&1 | tee >(go-junit-report > report.xml)"
sh "make src.test-coverage 2>&1 | tee >(go-junit-report > report.xml)"
junit "report.xml"
sh 'gocover-cobertura < build/src/coverage.txt > cobertura.xml'
Expand Down
14 changes: 14 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,20 @@ src.test:
src.install:
$(GO) install -v ./src/...

.PHONY: src.test-prometheus
src.test-prometheus:
kubectl apply -f deploy/kubernetes/apps/monitoring/ -R
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl get nodes -o jsonpath="$$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1; done
#Verify kube-addon-manager.
#kube-addon-manager is responsible for managing other kubernetes components, such as kube-dns, dashboard, storage-provisioner..
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl -n kube-system get pods -lcomponent=kube-addon-manager -o jsonpath="$$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1;echo "waiting for kube-addon-manager to be available"; kubectl get pods --all-namespaces; done
# Wait for kube-dns to be ready.
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl -n kube-system get pods -lk8s-app=kube-dns -o jsonpath="$$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1;echo "waiting for kube-dns to be available"; kubectl get pods --all-namespaces; done
#Chck the functrion of prometheus
until curl --connect-timeout 1 -sL -w "%{http_code}\\n" http://`kubectl get service -n monitoring prometheus -o jsonpath="{.spec.clusterIP}"`:9090/api/v1/query?query=prometheus_build_info -o /dev/null | grep 200; do sleep 1; echo "wait the prometheus to be available"; done
#Wait the cadvisor to be ready
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl -n monitoring get pods -lname=cadvisor -o jsonpath="$$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1;echo "waiting for cadvisor to be available"; kubectl get pods --all-namespaces; done

.PHONY: src.test-coverage
src.test-coverage:
$(MKDIR_P) $(BUILD_FOLDER)/src/
Expand Down
22 changes: 12 additions & 10 deletions jenkins/entry.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,18 @@ echo 'jenkins:x:'$UID':'$GID':,,,:/home/jenkins:/bin/bash' >> /etc/passwd
sudo service docker start
mkdir -p /home/jenkins/data/mongo
nohup mongod --dbpath=/home/jenkins/data/mongo 2>&1 > /dev/null &
docker run --name prometheus -d -p 9090:9090 prom/prometheus
for i in `seq 1 20`
do
curl http://127.0.0.1:9090/api/v1/query?query=prometheus_build_info > /dev/null
ret=$?
if [ "$ret" = "0" ]; then
break
fi
sleep 1
done
sudo chown -R jenkins:jenkins /home/jenkins

# Make / mounted as rshared to support
sudo mount --make-rshared /
# Make /sys mounted as rshared to support cadvisor
sudo mount --make-rshared /sys
# # Download kubectl, which is a requirement for using minikube.
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.9.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Download minikube.
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
sudo env CHANGE_MINIKUBE_NONE_USER=true minikube start --vm-driver=none --bootstrapper=localkube --kubernetes-version=v1.9.0
# Fix the kubectl context, as it's often stale.
minikube update-context

bash

0 comments on commit f247bba

Please sign in to comment.