Merge "[CORD-2966] helm-api-test job for containerized testing of xos-core"
diff --git a/jjb/helm-api-test.yaml b/jjb/helm-api-test.yaml
new file mode 100644
index 0000000..45e8c5e
--- /dev/null
+++ b/jjb/helm-api-test.yaml
@@ -0,0 +1,33 @@
+---
+# CORD API tests using helm
+
+- job-template:
+ id: helm-api-test
+ name: 'verify_{project}_helm-api-test'
+ description: |
+ Created by helm-api-test job-template from ci-management/jjb/helm-api-test.yaml
+
+ triggers:
+ - cord-infra-gerrit-trigger-patchset:
+ gerrit-server-name: '{gerrit-server-name}'
+ project-regexp: '^{project}$'
+ branch-regexp: '{branch-regexp}'
+ file-include-regexp: '{all-files-regexp}'
+ dependency-jobs: '{dependency-jobs}'
+
+ properties:
+ - cord-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '60'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ node: 'ubuntu16.04-basebuild-4c-8g'
+ project-type: pipeline
+ concurrent: true
+
+ dsl: !include-raw-escape: pipeline/helm-api-test.groovy
+
diff --git a/jjb/pipeline/helm-api-test.groovy b/jjb/pipeline/helm-api-test.groovy
new file mode 100644
index 0000000..68f4f6f
--- /dev/null
+++ b/jjb/pipeline/helm-api-test.groovy
@@ -0,0 +1,89 @@
+/* helm-api-test pipeline */
+
+pipeline {
+
+ /* no label, executor is determined by JJB */
+ agent {
+ label ''
+ }
+
+ stages {
+
+ stage('prep') {
+ parallel {
+
+ stage('images') {
+ steps {
+ sh 'cd cord/build; ./scripts/imagebuilder.py -f helm-charts/examples/test-images.yaml'
+
+ }
+ }
+
+ stage('minikube') {
+ steps {
+ /* see https://github.com/kubernetes/minikube/#linux-continuous-integration-without-vm-support */
+ sh '''
+ export MINIKUBE_WANTUPDATENOTIFICATION=false;
+ export MINIKUBE_WANTREPORTERRORPROMPT=false;
+ export CHANGE_MINIKUBE_NONE_USER=true;
+ export MINIKUBE_HOME=$HOME;
+ mkdir -p $HOME/.kube || true;
+ touch $HOME/.kube/config;
+ export KUBECONFIG=$HOME/.kube/config;
+ sudo -E minikube start --vm-driver=none;
+
+ sudo chown -R $USER $HOME/.minikube;
+ sudo chgrp -R $(id -g) $HOME/.minikube;
+
+ for i in {1..150}; do # timeout for 5 minutes
+ ./kubectl get po &> /dev/null
+ if [ $? -ne 1 ]; then
+ break
+ fi
+ sleep 2
+ done
+ '''
+ }
+ }
+ }
+ }
+
+ stage('helm') {
+ steps {
+ sh 'helm init && sleep 60'
+ }
+ }
+
+ stage('xos') {
+ steps {
+ sh '''
+ cd cord/build/helm-charts;
+ helm dep up xos-core;
+ helm install -f examples/test-values.yaml -f examples/candidate-tag-values.yaml xos-core -n xos-core;
+ sleep 60
+ '''
+ }
+ }
+
+ stage('test'){
+ steps {
+ sh 'helm test xos-core'
+ sh 'kubectl logs xos-core-api-test'
+ }
+ post {
+ always {
+ archive '/tmp/helm_test_xos_core_logs_*/**'
+
+ }
+ }
+ }
+ }
+
+ post {
+ always {
+ sh 'kubectl delete pod xos-core-api-test'
+ sh 'helm delete --purge xos-core'
+ deleteDir()
+ }
+ }
+}
diff --git a/jjb/verify/helm-charts.yaml b/jjb/verify/helm-charts.yaml
index 621168b..23ade64 100644
--- a/jjb/verify/helm-charts.yaml
+++ b/jjb/verify/helm-charts.yaml
@@ -17,4 +17,6 @@
dependency-jobs: 'verify_helm-charts_licensed'
- 'verify-helm-lint':
dependency-jobs: 'verify_helm-charts_sonarqube'
+ - 'helm-api-test':
+ dependency-jobs: 'verify_helm-charts_helm-lint'