Merge "jenkins file update"
diff --git a/jjb/aaa.yaml b/jjb/aaa.yaml
deleted file mode 100644
index 398b4ff..0000000
--- a/jjb/aaa.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
----
-# maven job for 'aaa' repo
-
-- project:
- name: aaa
- project: '{name}'
-
- jobs:
- - 'aaa':
- branch-regexp: '{supported-branches-regexp}'
-
-- job-group:
- name: 'aaa'
- jobs:
- - 'aaa-gerrit':
- goals: 'clean install'
- - 'verify-licensed'
-
-- job-template:
- name: 'aaa-gerrit'
- builders:
- - lf-maven-build:
- mvn-goals: '{goals}'
- - 'cord-infra-sonarqube':
- project: '{name}'
-
- triggers:
- - cord-infra-gerrit-trigger-patchset:
- gerrit-server-name: '{gerrit-server-name}'
- project-regexp: 'aaa'
- 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}'
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index 5ca5ae9..e7d2896 100644
--- a/jjb/defaults.yaml
+++ b/jjb/defaults.yaml
@@ -40,8 +40,10 @@
# regexp for gerrit triggers
# list of supported branches, for branch-regexp
- supported-branches-regexp: '^(master|cord-5.0|cord-4.1|cord-4.0)$'
+ supported-branches-regexp: '^(master|cord-6.0|cord-5.0|cord-4.1|cord-4.0)$'
+ modern-branches-regexp: '^(master|cord-6.0)$'
# for matching files with file-include-regexp
all-files-regexp: '.*'
doc-files-regexp: "^docs/.*"
+
diff --git a/jjb/helm-api-test.yaml b/jjb/helm-api-test.yaml
new file mode 100644
index 0000000..a9ec6a8
--- /dev/null
+++ b/jjb/helm-api-test.yaml
@@ -0,0 +1,48 @@
+---
+# 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}'
+
+ parameters:
+ - string:
+ name: executorNode
+ default: 'ubuntu16.04-basebuild-4c-8g'
+ description: 'Name of the Jenkins node to run the job on'
+
+ - string:
+ name: manifestUrl
+ default: '{gerrit-server-url}/{cord-repo-manifest}'
+ description: 'URL to the repo manifest'
+
+ - string:
+ name: manifestBranch
+ default: '$GERRIT_BRANCH'
+ description: 'Name of the repo branch to use'
+
+ project-type: pipeline
+ concurrent: true
+
+ dsl: !include-raw-escape: pipeline/helm-api-test.groovy
+
diff --git a/jjb/helm.yaml b/jjb/helm.yaml
new file mode 100644
index 0000000..dbb08e3
--- /dev/null
+++ b/jjb/helm.yaml
@@ -0,0 +1,64 @@
+---
+# CORD helm chart publishing tasks
+
+- project:
+ name: helm-repo
+
+ # add repos that have documentation to the project list in both jobs
+ jobs:
+ - 'publish-helm-repo':
+ project-regexp: '^(helm-charts)$'
+ branch-regexp: '{supported-branches-regexp}'
+
+
+- job-template:
+ id: publish-helm-repo
+ name: 'publish-helm-repo'
+ description: |
+ Created by publish-helm-repo job-template from ci-management/jjb/helm.yaml
+
+ triggers:
+ - cord-infra-gerrit-trigger-merge:
+ gerrit-server-name: '{gerrit-server-name}'
+ project-regexp: '{project-regexp}'
+ 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: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ scm:
+ - lf-infra-gerrit-scm:
+ git-url: '$GIT_URL/$GERRIT_PROJECT'
+ refspec: ''
+ branch: '$GERRIT_BRANCH'
+ submodule-recursive: 'false'
+ choosing-strategy: default
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ node: '{build-node}'
+ project-type: freestyle
+ concurrent: false
+
+ builders:
+ - shell: |
+ helm init --client-only
+ helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+ ./scripts/helmrepo.sh
+
+# publish over ssh: https://docs.openstack.org/infra/jenkins-job-builder/publishers.html#publishers.ssh
+ publishers:
+ - ssh:
+ site: 'CORD Wiki'
+ source: 'chart_repo/**'
+ remove-prefix: 'chart_repo'
+ target: '//var/www/guide/charts/$GERRIT_BRANCH'
+
diff --git a/jjb/maven.yaml b/jjb/maven.yaml
new file mode 100644
index 0000000..02195e3
--- /dev/null
+++ b/jjb/maven.yaml
@@ -0,0 +1,48 @@
+---
+# maven install jobs for cord onos app repos
+
+- job-template:
+ id: maven-install
+ name: '{project}-gerrit'
+ description: |
+ <!-- Managed by Jenkins Job Builder -->
+ Created by {id} job-template from ci-management/jjb/maven.yaml
+
+ node: 'ubuntu16.04-basebuild-1c-2g'
+ project-type: maven
+ maven:
+ root-pom: pom.xml
+ goals: 'clean install'
+
+ parameters:
+ - string:
+ name: GERRIT_BRANCH
+ default: 'master'
+ description: 'Use default when using "Build Now"'
+
+ - string:
+ name: GERRIT_REFSPEC
+ default: 'refs/heads/master'
+ description: 'Use default when using "Build Now"'
+
+ 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}'
+
+ scm:
+ - git:
+ url: '{gerrit-server-url}/{project}'
+ branches:
+ - '$GERRIT_BRANCH'
+ refspec: '$GERRIT_REFSPEC'
+ choosing-strategy: 'gerrit'
+ shallow-clone: true
diff --git a/jjb/maven/aaa.yaml b/jjb/maven/aaa.yaml
new file mode 100644
index 0000000..9a86551
--- /dev/null
+++ b/jjb/maven/aaa.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'aaa' repo
+
+- project:
+ name: aaa
+ project: '{name}'
+
+ jobs:
+ - 'aaa-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'aaa-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/config.yaml b/jjb/maven/config.yaml
new file mode 100644
index 0000000..d865397
--- /dev/null
+++ b/jjb/maven/config.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'config' repo
+
+- project:
+ name: config
+ project: '{name}'
+
+ jobs:
+ - 'config-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'config-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/dhcpl2relay.yaml b/jjb/maven/dhcpl2relay.yaml
new file mode 100644
index 0000000..93c3648
--- /dev/null
+++ b/jjb/maven/dhcpl2relay.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'dhcpl2relay' repo
+
+- project:
+ name: dhcpl2relay
+ project: '{name}'
+
+ jobs:
+ - 'dhcpl2relay-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'dhcpl2relay-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/igmp.yaml b/jjb/maven/igmp.yaml
new file mode 100644
index 0000000..438e78b
--- /dev/null
+++ b/jjb/maven/igmp.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'igmp' repo
+
+- project:
+ name: igmp
+ project: '{name}'
+
+ jobs:
+ - 'igmp-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'igmp-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/igmpproxy.yaml b/jjb/maven/igmpproxy.yaml
new file mode 100644
index 0000000..855c809
--- /dev/null
+++ b/jjb/maven/igmpproxy.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'igmpproxy' repo
+
+- project:
+ name: igmpproxy
+ project: '{name}'
+
+ jobs:
+ - 'igmpproxy-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'igmpproxy-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/mcast.yaml b/jjb/maven/mcast.yaml
new file mode 100644
index 0000000..4ed1433
--- /dev/null
+++ b/jjb/maven/mcast.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'mcast' repo
+
+- project:
+ name: mcast
+ project: '{name}'
+
+ jobs:
+ - 'mcast-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'mcast-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/olt.yaml b/jjb/maven/olt.yaml
new file mode 100644
index 0000000..a84c9bc
--- /dev/null
+++ b/jjb/maven/olt.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'olt' repo
+
+- project:
+ name: olt
+ project: '{name}'
+
+ jobs:
+ - 'olt-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'olt-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/sadis.yaml b/jjb/maven/sadis.yaml
new file mode 100644
index 0000000..9b4dff4
--- /dev/null
+++ b/jjb/maven/sadis.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'sadis' repo
+
+- project:
+ name: sadis
+ project: '{name}'
+
+ jobs:
+ - 'sadis-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'sadis-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/maven/vtn.yaml b/jjb/maven/vtn.yaml
new file mode 100644
index 0000000..3efdd96
--- /dev/null
+++ b/jjb/maven/vtn.yaml
@@ -0,0 +1,16 @@
+---
+# maven job for 'vtn' repo
+
+- project:
+ name: vtn-onos
+ project: '{name}'
+
+ jobs:
+ - 'vtn-gerrit':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'vtn-gerrit'
+ jobs:
+ - 'verify-licensed'
+ - 'maven-install'
diff --git a/jjb/pipeline/helm-api-test.groovy b/jjb/pipeline/helm-api-test.groovy
new file mode 100644
index 0000000..c776510
--- /dev/null
+++ b/jjb/pipeline/helm-api-test.groovy
@@ -0,0 +1,113 @@
+/* helm-api-test pipeline */
+
+pipeline {
+
+ parameters {
+ string(name:'executorNode', defaultValue:'invalid', description:'Name of the Jenkins node to run the job on')
+ string(name:'manifestUrl', defaultValue:'invalid', description:'URL to the repo manifest')
+ string(name:'manifestBranch', defaultValue:'master', description:'Name of the repo branch to use')
+ }
+
+ /* no label, executor is determined by JJB */
+ agent {
+ label '${params.executorNode}'
+ }
+
+ stages {
+
+ stage('checkout') {
+ steps {
+ checkout(changelog: false, \
+ poll: false,
+ scm: [$class: 'RepoScm', \
+ manifestRepositoryUrl: '${params.manifestUrl}', \
+ manifestBranch: '${params.manifestBranch}', \
+ currentBranch: true, \
+ destinationDir: 'cord', \
+ forceSync: true,
+ resetFirst: true, \
+ quiet: true, \
+ jobs: 4, \
+ showAllChanges: true] \
+ )
+ }
+ }
+
+ 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;
+ minikube start --vm-driver=none;
+
+ chown -R $USER $HOME/.minikube;
+ 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/sonar.yaml b/jjb/sonar.yaml
index 8173268..344a1c2 100644
--- a/jjb/sonar.yaml
+++ b/jjb/sonar.yaml
@@ -57,10 +57,10 @@
scm:
- lf-infra-gerrit-scm:
git-url: '$GIT_URL/$GERRIT_PROJECT'
- refspec: '$GERRIT_REFSPEC'
+ refspec: ''
branch: '$GERRIT_BRANCH'
submodule-recursive: 'false'
- choosing-strategy: gerrit
+ choosing-strategy: default
jenkins-ssh-credential: '{jenkins-ssh-credential}'
node: 'ubuntu16.04-basebuild-1c-2g'
diff --git a/jjb/verify/exampleservice.yaml b/jjb/verify/exampleservice.yaml
new file mode 100644
index 0000000..5f42c26
--- /dev/null
+++ b/jjb/verify/exampleservice.yaml
@@ -0,0 +1,19 @@
+---
+# verification jobs for 'exampleservice' repo
+
+- project:
+ name: exampleservice
+ project: '{name}'
+
+ jobs:
+ - 'verify-exampleservice-jobs':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'verify-exampleservice-jobs'
+ jobs:
+ - 'verify-licensed'
+ - 'verify-sonarqube':
+ dependency-jobs: 'verify_exampleservice_licensed'
+ - 'api-test':
+ dependency-jobs: 'verify_exampleservice_sonarqube'
diff --git a/jjb/verify/helm-charts.yaml b/jjb/verify/helm-charts.yaml
index 621168b..90930a8 100644
--- a/jjb/verify/helm-charts.yaml
+++ b/jjb/verify/helm-charts.yaml
@@ -7,7 +7,7 @@
jobs:
- 'verify-helm-charts-jobs':
- branch-regexp: '^master$'
+ branch-regexp: '{modern-branches-regexp}'
- job-group:
name: 'verify-helm-charts-jobs'
@@ -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'
diff --git a/jjb/verify/simpleexampleservice.yaml b/jjb/verify/simpleexampleservice.yaml
new file mode 100644
index 0000000..397c324
--- /dev/null
+++ b/jjb/verify/simpleexampleservice.yaml
@@ -0,0 +1,19 @@
+---
+# verification jobs for 'simpleexampleservice' repo
+
+- project:
+ name: simpleexampleservice
+ project: '{name}'
+
+ jobs:
+ - 'verify-simpleexampleservice-jobs':
+ branch-regexp: '{supported-branches-regexp}'
+
+- job-group:
+ name: 'verify-simpleexampleservice-jobs'
+ jobs:
+ - 'verify-licensed'
+ - 'verify-sonarqube':
+ dependency-jobs: 'verify_simpleexampleservice_licensed'
+ - 'api-test':
+ dependency-jobs: 'verify_simpleexampleservice_sonarqube'
diff --git a/packer/provision/basebuild.sh b/packer/provision/basebuild.sh
index 2015ef3..b1ff0d4 100644
--- a/packer/provision/basebuild.sh
+++ b/packer/provision/basebuild.sh
@@ -143,6 +143,15 @@
rm -rf helm.tgz ${HELM_PLATFORM}
popd
+ # install kubectl
+ KUBECTL_VERSION="1.9.5"
+ KUBECTL_SHA256SUM="9c67b6e80e9dd3880511c7d912c5a01399c1d74aaf4d71989c7d5a4f2534bcd5"
+ curl -L -o /tmp/kubectl "https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
+ echo "$KUBECTL_SHA256SUM /tmp/kubectl" | sha256sum -c -
+ mv /tmp/kubectl /usr/local/bin/kubectl
+ chmod a+x /usr/local/bin/kubectl
+ rm -f /tmp/kubectl
+
# install minikube
MINIKUBE_VERSION="0.26.1"
MINIKUBE_DEB_VERSION="$(echo ${MINIKUBE_VERSION} | sed -n 's/\(.*\)\.\(.*\)/\1-\2/p')"