[VOL-3780] Moving openonu-go pipelines to use the helm-charts
Change-Id: I9ee548ca2be6161c2c4e1447dd3e140ccf042a45
diff --git a/jjb/pipeline/voltha-openonu-go-tests.groovy b/jjb/pipeline/voltha-openonu-go-tests.groovy
deleted file mode 100755
index d810638..0000000
--- a/jjb/pipeline/voltha-openonu-go-tests.groovy
+++ /dev/null
@@ -1,519 +0,0 @@
-// Copyright 2017-present Open Networking Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// voltha-2.x e2e tests
-// uses kind-voltha to deploy voltha-2.X
-// uses bbsim to simulate OLT/ONUs
-
-pipeline {
-
- /* no label, executor is determined by JJB */
- agent {
- label "${params.buildNode}"
- }
- options {
- timeout(time: 90, unit: 'MINUTES')
- }
- environment {
- KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
- VOLTCONFIG="$HOME/.volt/config-minimal"
- PATH="$WORKSPACE/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- NAME="minimal"
- FANCY=0
- WITH_SIM_ADAPTERS="n"
- WITH_RADIUS="y"
- WITH_BBSIM="y"
- DEPLOY_K8S="y"
- VOLTHA_LOG_LEVEL="DEBUG"
- CONFIG_SADIS="external"
- BBSIM_CFG="configs/bbsim-sadis-att.yaml"
- ROBOT_MISC_ARGS="-d $WORKSPACE/RobotLogs"
- EXTRA_HELM_FLAGS=" --set global.image_registry=mirror.registry.opennetworking.org/ --set defaults.image_registry=mirror.registry.opennetworking.org/ "
- }
- stages {
- stage('Clone kind-voltha') {
- steps {
- checkout([
- $class: 'GitSCM',
- userRemoteConfigs: [[
- url: "https://gerrit.opencord.org/kind-voltha",
- refspec: "${kindVolthaChange}"
- ]],
- branches: [[ name: "master", ]],
- extensions: [
- [$class: 'WipeWorkspace'],
- [$class: 'RelativeTargetDirectory', relativeTargetDir: "kind-voltha"],
- [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
- ],
- ])
- sh """
- if [ '${kindVolthaChange}' != '' ] ; then
- cd $WORKSPACE/kind-voltha
- git fetch https://gerrit.opencord.org/kind-voltha ${kindVolthaChange} && git checkout FETCH_HEAD
- fi
- """
- }
- }
- stage('Clone voltha-system-tests') {
- steps {
- checkout([
- $class: 'GitSCM',
- userRemoteConfigs: [[
- url: "https://gerrit.opencord.org/voltha-system-tests",
- refspec: "${volthaSystemTestsChange}"
- ]],
- branches: [[ name: "${branch}", ]],
- extensions: [
- [$class: 'WipeWorkspace'],
- [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-system-tests"],
- [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
- ],
- ])
- sh """
- if [ '${volthaSystemTestsChange}' != '' ] ; then
- cd $WORKSPACE/voltha-system-tests
- git fetch https://gerrit.opencord.org/voltha-system-tests ${volthaSystemTestsChange} && git checkout FETCH_HEAD
- fi
- """
- }
- }
- // If the repo under test is not kind-voltha
- // then download it and checkout the patch
- stage('Download Patch') {
- when {
- expression {
- return "${gerritProject}" != 'kind-voltha';
- }
- }
- steps {
- checkout([
- $class: 'GitSCM',
- userRemoteConfigs: [[
- url: "https://gerrit.opencord.org/${gerritProject}",
- refspec: "${gerritRefspec}"
- ]],
- branches: [[ name: "${branch}", ]],
- extensions: [
- [$class: 'WipeWorkspace'],
- [$class: 'RelativeTargetDirectory', relativeTargetDir: "${gerritProject}"],
- [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
- ],
- ])
- sh """
- pushd $WORKSPACE/${gerritProject}
- git fetch https://gerrit.opencord.org/${gerritProject} ${gerritRefspec} && git checkout FETCH_HEAD
- echo "Currently on commit: \n"
- git log -1 --oneline
- popd
- """
- }
- }
- // If the repo under test is kind-voltha we don't need to download it again,
- // as we already have it, simply checkout the patch
- stage('Checkout kind-voltha patch') {
- when {
- expression {
- return "${gerritProject}" == 'kind-voltha';
- }
- }
- steps {
- sh """
- cd $WORKSPACE/kind-voltha
- git fetch https://gerrit.opencord.org/kind-voltha ${gerritRefspec} && git checkout FETCH_HEAD
- """
- }
- }
- stage('Create K8s Cluster') {
- steps {
- sh """
- cd $WORKSPACE/kind-voltha/
-
- if [ "${branch}" != "master" ]; then
- echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
- source "$WORKSPACE/kind-voltha/releases/${branch}"
- else
- echo "on master, using default settings for kind-voltha"
- fi
-
- JUST_K8S=y ./voltha up
- bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/kind-voltha/bin"
- """
- }
- }
-
- stage('Build Images') {
- steps {
- sh """
- make -C $WORKSPACE/voltha-openonu-adapter-go DOCKER_REGISTRY=mirror.registry.opennetworking.org/ DOCKER_REPOSITORY=voltha/ DOCKER_TAG=citest docker-build
- """
- }
- }
-
- stage('Push Images') {
- steps {
- sh '''
- docker images | grep citest
- for image in \$(docker images -f "reference=*/*/*citest" --format "{{.Repository}}"); do echo "Pushing \$image to nodes"; kind load docker-image \$image:citest --name voltha-\$NAME --nodes voltha-\$NAME-control-plane,voltha-\$NAME-worker,voltha-\$NAME-worker2; done
- '''
- }
- }
- stage('Deploy Voltha') {
- steps {
- sh """
- export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
- IMAGES="adapter_open_onu_go"
-
- for I in \$IMAGES
- do
- EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
- done
-
- cd $WORKSPACE/kind-voltha/
- echo \$EXTRA_HELM_FLAGS
-
- if [ "${branch}" != "master" ]; then
- echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
- source "$WORKSPACE/kind-voltha/releases/${branch}"
- else
- echo "on master, using default settings for kind-voltha"
- fi
-
- ./voltha up
- """
- }
- }
-
- stage('Run E2E Tests 1t8gem') {
- environment {
- ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/1t8gem"
- }
- steps {
- sh '''
- cd $WORKSPACE/kind-voltha/
- WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
- export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
- IMAGES="adapter_open_onu_go"
-
- for I in \$IMAGES
- do
- EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
- done
- #1t8gem
- mkdir -p $WORKSPACE/1t8gem
- _TAG=kail-1t8gem kail -n voltha -n default > $WORKSPACE/1t8gem/onos-voltha-combined.log &
-
- if [ "${branch}" != "master" ]; then
- echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
- source "$WORKSPACE/kind-voltha/releases/${branch}"
- else
- echo "on master, using default settings for kind-voltha"
- fi
-
- DEPLOY_K8S=n ./voltha up
-
- mkdir -p $ROBOT_LOGS_DIR/1t8gem
- export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR"
- export TARGET_1T8GEM=1t8gem-openonu-go-adapter-test
-
- if [ "${branch}" != "voltha-2.6" ]; then
- export KVSTOREPREFIX=voltha_voltha
- fi
-
- make -C $WORKSPACE/voltha-system-tests \$TARGET_1T8GEM || true
-
- # stop logging
- P_IDS="$(ps e -ww -A | grep "_TAG=kail-1t8gem" | grep -v grep | awk '{print $1}')"
- if [ -n "$P_IDS" ]; then
- echo $P_IDS
- for P_ID in $P_IDS; do
- kill -9 $P_ID
- done
- fi
-
- # get pods information
- kubectl get pods -o wide --all-namespaces > $WORKSPACE/1t8gem/pods.txt || true
- '''
- }
- }
-
- stage('DT workflow') {
- environment {
- ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/DTWorkflow"
- }
- steps {
- sh '''
- cd $WORKSPACE/kind-voltha/
- WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
- export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
- IMAGES="adapter_open_onu_go"
-
- for I in \$IMAGES
- do
- EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
- done
-
- # Workflow-specific flags
- export WITH_RADIUS=no
- export WITH_EAPOL=no
- export WITH_DHCP=no
- export WITH_IGMP=no
- export CONFIG_SADIS="external"
- export BBSIM_CFG="configs/bbsim-sadis-dt.yaml"
-
- # start logging
- mkdir -p $WORKSPACE/dt
- _TAG=kail-dt kail -n voltha -n default > $WORKSPACE/dt/onos-voltha-combined.log &
-
- if [ "${branch}" != "master" ]; then
- echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
- source "$WORKSPACE/kind-voltha/releases/${branch}"
- else
- echo "on master, using default settings for kind-voltha"
- fi
-
- DEPLOY_K8S=n ./voltha up
-
- mkdir -p $ROBOT_LOGS_DIR
- export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
-
- # By default, all tests tagged 'sanityDt' are run. This covers basic functionality
- # like running through the DT workflow for a single subscriber.
- export TARGET=sanity-kind-dt
-
- # If the Gerrit comment contains a line with "functional tests" then run the full
- # functional test suite. This covers tests tagged either 'sanityDt' or 'functionalDt'.
- # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
- REGEX="functional tests"
- if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
- TARGET=functional-single-kind-dt
- fi
-
- make -C $WORKSPACE/voltha-system-tests \$TARGET || true
-
- # stop logging
- P_IDS="$(ps e -ww -A | grep "_TAG=kail-dt" | grep -v grep | awk '{print $1}')"
- if [ -n "$P_IDS" ]; then
- echo $P_IDS
- for P_ID in $P_IDS; do
- kill -9 $P_ID
- done
- fi
-
- # get pods information
- kubectl get pods -o wide --all-namespaces > $WORKSPACE/dt/pods.txt || true
- '''
- }
- }
-
- stage('ATT workflow') {
- environment {
- ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/ATTWorkflow"
- }
- steps {
- sh '''
- cd $WORKSPACE/kind-voltha/
- WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
- export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
- IMAGES="adapter_open_onu_go"
-
- for I in \$IMAGES
- do
- EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
- done
-
- # Workflow-specific flags
- export WITH_RADIUS=yes
- export WITH_EAPOL=yes
- export WITH_BBSIM=yes
- export DEPLOY_K8S=yes
- export CONFIG_SADIS="external"
- export BBSIM_CFG="configs/bbsim-sadis-att.yaml"
-
- if [ "${gerritProject}" = "voltctl" ]; then
- export VOLTCTL_VERSION=$(cat $WORKSPACE/voltctl/VERSION)
- cp $WORKSPACE/voltctl/voltctl $WORKSPACE/kind-voltha/bin/voltctl
- md5sum $WORKSPACE/kind-voltha/bin/voltctl
- fi
-
- # start logging
- mkdir -p $WORKSPACE/att
- _TAG=kail-att kail -n voltha -n default > $WORKSPACE/att/onos-voltha-combined.log &
-
- if [ "${branch}" != "master" ]; then
- echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
- source "$WORKSPACE/kind-voltha/releases/${branch}"
- else
- echo "on master, using default settings for kind-voltha"
- fi
-
- DEPLOY_K8S=n ./voltha up
-
- mkdir -p $ROBOT_LOGS_DIR
- export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
-
- # By default, all tests tagged 'sanity' are run. This covers basic functionality
- # like running through the ATT workflow for a single subscriber.
- export TARGET=sanity-single-kind
-
- # If the Gerrit comment contains a line with "functional tests" then run the full
- # functional test suite. This covers tests tagged either 'sanity' or 'functional'.
- # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
- REGEX="functional tests"
- if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
- TARGET=functional-single-kind
- fi
-
- make -C $WORKSPACE/voltha-system-tests \$TARGET || true
-
- # stop logging
- P_IDS="$(ps e -ww -A | grep "_TAG=kail-att" | grep -v grep | awk '{print $1}')"
- if [ -n "$P_IDS" ]; then
- echo $P_IDS
- for P_ID in $P_IDS; do
- kill -9 $P_ID
- done
- fi
-
- # get pods information
- kubectl get pods -o wide --all-namespaces > $WORKSPACE/att/pods.txt || true
- '''
- }
- }
-
- stage('TT workflow') {
- environment {
- ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/TTWorkflow"
- }
- steps {
- sh '''
- cd $WORKSPACE/kind-voltha/
- WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
-
- export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
-
- IMAGES="adapter_open_onu_go"
-
- for I in \$IMAGES
- do
- EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
- done
-
- # Workflow-specific flags
- export WITH_RADIUS=no
- export WITH_EAPOL=no
- export WITH_DHCP=yes
- export WITH_IGMP=yes
- export CONFIG_SADIS="external"
- export BBSIM_CFG="configs/bbsim-sadis-tt.yaml"
-
- # start logging
- mkdir -p $WORKSPACE/tt
- _TAG=kail-tt kail -n voltha -n default > $WORKSPACE/tt/onos-voltha-combined.log &
-
- if [ "${branch}" != "master" ]; then
- echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
- source "$WORKSPACE/kind-voltha/releases/${branch}"
- else
- echo "on master, using default settings for kind-voltha"
- fi
-
- DEPLOY_K8S=n ./voltha up
-
- mkdir -p $ROBOT_LOGS_DIR
- export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
-
- # By default, all tests tagged 'sanityTt' are run. This covers basic functionality
- # like running through the TT workflow for a single subscriber.
- export TARGET=sanity-kind-tt
-
- # If the Gerrit comment contains a line with "functional tests" then run the full
- # functional test suite. This covers tests tagged either 'sanityTt' or 'functionalTt'.
- # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
- REGEX="functional tests"
- if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
- TARGET=functional-single-kind-tt
- fi
-
- make -C $WORKSPACE/voltha-system-tests \$TARGET || true
-
- # stop logging
- P_IDS="$(ps e -ww -A | grep "_TAG=kail-tt" | grep -v grep | awk '{print $1}')"
- if [ -n "$P_IDS" ]; then
- echo $P_IDS
- for P_ID in $P_IDS; do
- kill -9 $P_ID
- done
- fi
-
- # get pods information
- kubectl get pods -o wide --all-namespaces > $WORKSPACE/tt/pods.txt || true
- '''
- }
- }
- }
- post {
- always {
- sh '''
- set +e
- # get pods information
- kubectl get pods -o wide --all-namespaces
- kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}"
- helm ls
-
- sync
- pkill kail || true
- md5sum $WORKSPACE/kind-voltha/bin/voltctl
-
- ## Pull out errors from log files
- extract_errors_go() {
- echo
- echo "Error summary for $1:"
- grep $1 $WORKSPACE/onos-voltha-combined.log | grep '"level":"error"' | cut -d ' ' -f 2- | jq -r '.msg'
- echo
- }
-
- extract_errors_python() {
- echo
- echo "Error summary for $1:"
- grep $1 $WORKSPACE/onos-voltha-combined.log | grep 'ERROR' | cut -d ' ' -f 2-
- echo
- }
-
- extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log || true
- extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log || true
- extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log || true
- extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log || true
-
- gzip $WORKSPACE/onos-voltha-combined.log || true
- '''
- step([$class: 'RobotPublisher',
- disableArchiveOutput: false,
- logFileName: 'RobotLogs/*/log*.html',
- otherFiles: '',
- outputFileName: 'RobotLogs/*/output*.xml',
- outputPath: '.',
- passThreshold: 100,
- reportFileName: 'RobotLogs/*/report*.html',
- unstableThreshold: 0]);
- archiveArtifacts artifacts: '**/*.log,**/*.gz,**/*.txt'
- }
- }
-}
diff --git a/jjb/pipeline/voltha/master/openonu-go-periodic-test-bbsim.groovy b/jjb/pipeline/voltha/master/openonu-go-periodic-test-bbsim.groovy
new file mode 100644
index 0000000..1010e80
--- /dev/null
+++ b/jjb/pipeline/voltha/master/openonu-go-periodic-test-bbsim.groovy
@@ -0,0 +1,231 @@
+// Copyright 2021-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// voltha-2.x e2e tests for openonu-go
+// uses bbsim to simulate OLT/ONUs
+
+library identifier: 'cord-jenkins-libraries@master',
+ retriever: modernSCM([
+ $class: 'GitSCMSource',
+ remote: 'https://gerrit.opencord.org/ci-management.git'
+])
+
+def clusterName = "kind-ci"
+
+def execute_test(testName, workflow, testTarget, outputDir, testSpecificHelmFlags = "") {
+ def infraNamespace = "default"
+ def volthaNamespace = "voltha"
+ def robotLogsDir = "RobotLogs"
+ stage('Cleanup') {
+ timeout(15) {
+ script {
+ helmTeardown(["default", infraNamespace, volthaNamespace])
+ }
+ timeout(1) {
+ sh returnStdout: false, script: '''
+ # remove orphaned port-forward from different namespaces
+ ps aux | grep port-forw | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill -9
+ '''
+ }
+ // stop logging
+ sh """
+ P_IDS="\$(ps e -ww -A | grep "_TAG=kail-${workflow}" | grep -v grep | awk '{print \$1}')"
+ if [ -n "\$P_IDS" ]; then
+ echo \$P_IDS
+ for P_ID in \$P_IDS; do
+ kill -9 \$P_ID
+ done
+ fi
+ """
+ }
+ }
+ stage('Deploy Voltha') {
+ timeout(20) {
+ script {
+
+ // if we're downloading a voltha-helm-charts patch, then install from a local copy of the charts
+ def localCharts = false
+ if (volthaHelmChartsChange != "") {
+ localCharts = true
+ }
+
+ // NOTE temporary workaround expose ONOS node ports
+ def localHelmFlags = extraHelmFlags + " --set onos-classic.onosSshPort=30115 " +
+ " --set onos-classic.onosApiPort=30120 " +
+ " --set onos-classic.onosOfPort=31653 " +
+ " --set onos-classic.individualOpenFlowNodePorts=true " + testSpecificHelmFlags
+ volthaDeploy([
+ infraNamespace: infraNamespace,
+ volthaNamespace: volthaNamespace,
+ workflow: workflow.toLowerCase(),
+ extraHelmFlags: localHelmFlags,
+ localCharts: localCharts,
+ bbsimReplica: olts.toInteger(),
+ dockerRegistry: "mirror.registry.opennetworking.org"
+ ])
+ }
+ // start logging
+ sh """
+ mkdir -p ${outputDir}
+ _TAG=kail-${workflow} kail -n infra -n voltha > ${outputDir}/onos-voltha-combined.log &
+ """
+ sh """
+ JENKINS_NODE_COOKIE="dontKillMe" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
+ JENKINS_NODE_COOKIE="dontKillMe" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${infraNamespace} svc/voltha-infra-etcd 2379:2379; done"&
+ JENKINS_NODE_COOKIE="dontKillMe" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${infraNamespace} svc/voltha-infra-kafka 9092:9092; done"&
+ ps aux | grep port-forward
+ """
+ getPodsInfo("${outputDir}")
+ }
+ }
+ stage('Run test ' + testTarget + ' on ' + workflow + ' workFlow') {
+ sh """
+ mkdir -p $WORKSPACE/${robotLogsDir}/${testName}
+ export ROBOT_MISC_ARGS="-d $WORKSPACE/${robotLogsDir}/${testName} "
+ ROBOT_MISC_ARGS+="-v ONOS_SSH_PORT:30115 -v ONOS_REST_PORT:30120"
+ export KVSTOREPREFIX=voltha/voltha_voltha
+
+ make -C $WORKSPACE/voltha-system-tests ${testTarget} || true
+ """
+ }
+}
+
+pipeline {
+
+ /* no label, executor is determined by JJB */
+ agent {
+ label "${params.buildNode}"
+ }
+ options {
+ timeout(time: 130, unit: 'MINUTES')
+ }
+ environment {
+ KUBECONFIG="$HOME/.kube/kind-${clusterName}"
+ VOLTCONFIG="$HOME/.volt/config"
+ PATH="$PATH:$WORKSPACE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+ ROBOT_MISC_ARGS="-e PowerSwitch ${params.extraRobotArgs}"
+ DIAGS_PROFILE="VOLTHA_PROFILE"
+ }
+ stages {
+ stage('Download Code') {
+ steps {
+ getVolthaCode([
+ branch: "${branch}",
+ gerritProject: "${gerritProject}",
+ gerritRefspec: "${gerritRefspec}",
+ volthaSystemTestsChange: "${volthaSystemTestsChange}",
+ volthaHelmChartsChange: "${volthaHelmChartsChange}",
+ ])
+ }
+ }
+ stage('Create K8s Cluster') {
+ steps {
+ script {
+ def clusterExists = sh returnStdout: true, script: """
+ kind get clusters | grep ${clusterName} | wc -l
+ """
+ if (clusterExists.trim() == "0") {
+ createKubernetesCluster([nodes: 3, name: clusterName])
+ }
+ }
+ }
+ }
+
+ stage('Run E2E Tests 1t1gem') {
+ steps {
+ execute_test("1t1gem", "att", makeTarget, "$WORKSPACE/1t1gem")
+ }
+ }
+
+ stage('Run E2E Tests 1t4gem') {
+ steps {
+ execute_test("1t4gem", "att", make1t4gemTestTarget, "$WORKSPACE/1t4gem")
+ }
+ }
+
+ stage('Run E2E Tests 1t8gem') {
+ steps {
+ execute_test("1t8gem", "att", make1t8gemTestTarget, "$WORKSPACE/1t8gem")
+ }
+ }
+
+ stage('Run MIB Upload Tests') {
+ when { beforeAgent true; expression { return "${olts}" == "1" } }
+ steps {
+ script {
+ def mibUploadHelmFlags = "--set pon=2,onu=2,controlledActivation=only-onu "
+ execute_test("1t8gem", "att", "mib-upload-templating-openonu-go-adapter-test", "$WORKSPACE/mibupload", mibUploadHelmFlags)
+ }
+ }
+ }
+
+ stage('Reconcile DT workflow') {
+ steps {
+ script {
+ execute_test("ReconcileDT", "dt", makeReconcileDtTestTarget, "$WORKSPACE/ReconcileDT")
+ }
+ }
+ }
+
+ stage('Reconcile ATT workflow') {
+ steps {
+ script {
+ execute_test("ReconcileATT", "att", makeReconcileTestTarget, "$WORKSPACE/ReconcileATT")
+ }
+ }
+ }
+
+ stage('Reconcile TT workflow') {
+ steps {
+ script {
+ execute_test("ReconcileTT", "tt", makeReconcileTtTestTarget, "$WORKSPACE/ReconcileTT")
+ }
+ }
+ }
+ }
+ post {
+ aborted {
+ getPodsInfo("$WORKSPACE/failed")
+ sh """
+ kubectl logs -n voltha -l app.kubernetes.io/part-of=voltha > $WORKSPACE/failed/voltha.log
+ """
+ archiveArtifacts artifacts: '**/*.log,**/*.txt,**/*.html'
+ }
+ failure {
+ getPodsInfo("$WORKSPACE/failed")
+ sh """
+ kubectl logs -n voltha -l app.kubernetes.io/part-of=voltha > $WORKSPACE/failed/voltha.log
+ """
+ archiveArtifacts artifacts: '**/*.log,**/*.txt,**/*.html'
+ }
+ always {
+ step([$class: 'RobotPublisher',
+ disableArchiveOutput: false,
+ logFileName: "RobotLogs/*/log*.html",
+ otherFiles: '',
+ outputFileName: "RobotLogs/*/output*.xml",
+ outputPath: '.',
+ passThreshold: 100,
+ reportFileName: "RobotLogs/*/report*.html",
+ unstableThreshold: 0]);
+ archiveArtifacts artifacts: '**/*.log,**/*.gz,**/*.txt,**/*.html'
+ sh '''
+ sync
+ pkill kail || true
+ which voltctl
+ md5sum $(which voltctl)
+ '''
+ }
+ }
+}
diff --git a/jjb/pipeline/voltha-openonu-go-test-bbsim.groovy b/jjb/pipeline/voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy
similarity index 100%
rename from jjb/pipeline/voltha-openonu-go-test-bbsim.groovy
rename to jjb/pipeline/voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index 6b89909..bb42b7b 100755
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -21,7 +21,7 @@
make-target-reconciletttest: reconcile-openonu-go-adapter-test-tt
jobs:
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-test-bbsim'
pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
build-node: 'qct-pod4-node2'
@@ -37,7 +37,7 @@
pons: 2
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-multiple-olts-test-bbsim'
pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
build-node: 'qct-pod4-node2'
@@ -53,7 +53,7 @@
pons: 2
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-multiple-olts-test-bbsim-2.7'
pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
build-node: 'qct-pod4-node2'
@@ -71,21 +71,19 @@
- 'voltha-periodic-test':
name: 'periodic-voltha-openonu-go-test-bbsim'
- pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
- build-node: 'ubuntu18.04-basebuild-8c-15g'
- make-target: openonu-go-adapter-test
- make-target-1t4gemtest: 1t4gem-openonu-go-adapter-test
- make-target-1t8gemtest: 1t8gem-openonu-go-adapter-test
- make-target-reconciletest: reconcile-openonu-go-adapter-test
- make-target-reconciledttest: reconcile-openonu-go-adapter-test-dt
- make-target-reconciletttest: reconcile-openonu-go-adapter-test-tt
- withAlarms: false
code-branch: 'master'
time-trigger: "H H/12 * * *"
- 'voltha-periodic-test':
+ name: 'patchset-voltha-openonu-go-test-bbsim'
+ trigger-comment: "voltha test openonu"
+ code-branch: '$GERRIT_BRANCH'
+ gerrit-project: '$GERRIT_PROJECT'
+ gerritRefspec: '$GERRIT_REFSPEC'
+
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-openonu-go-test-bbsim-2.7'
- pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
+ pipeline-script: 'voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy'
build-node: 'ubuntu18.04-basebuild-8c-15g'
make-target: openonu-go-adapter-test
make-target-1t4gemtest: 1t4gem-openonu-go-adapter-test
@@ -99,24 +97,35 @@
- 'voltha-periodic-test':
name: 'periodic-voltha-multiple-olts-openonu-go-test-bbsim'
- pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
- build-node: 'ubuntu18.04-basebuild-8c-15g'
- make-target: openonu-go-adapter-multi-olt-test
+ code-branch: 'master'
+ olts: 2
+ onus: 2
+ pons: 2
make-target-1t4gemtest: 1t4gem-openonu-go-adapter-multi-olt-test
make-target-1t8gemtest: 1t8gem-openonu-go-adapter-multi-olt-test
make-target-reconciletest: reconcile-openonu-go-adapter-multi-olt-test
make-target-reconciledttest: reconcile-openonu-go-adapter-multi-olt-test-dt
make-target-reconciletttest: reconcile-openonu-go-adapter-multi-olt-test-tt
- withAlarms: false
- code-branch: 'master'
- olts: 2
- onus: 2
- pons: 2
time-trigger: "H H/12 * * *"
- 'voltha-periodic-test':
+ name: 'patchset-voltha-multiple-olts-openonu-go-test-bbsim'
+ trigger-comment: "voltha test openonu multiolt"
+ code-branch: '$GERRIT_BRANCH'
+ gerrit-project: '$GERRIT_PROJECT'
+ gerritRefspec: '$GERRIT_REFSPEC'
+ make-target-1t4gemtest: 1t4gem-openonu-go-adapter-multi-olt-test
+ make-target-1t8gemtest: 1t8gem-openonu-go-adapter-multi-olt-test
+ make-target-reconciletest: reconcile-openonu-go-adapter-multi-olt-test
+ make-target-reconciledttest: reconcile-openonu-go-adapter-multi-olt-test-dt
+ make-target-reconciletttest: reconcile-openonu-go-adapter-multi-olt-test-tt
+ olts: 2
+ onus: 2
+ pons: 2
+
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-multiple-olts-openonu-go-test-bbsim-2.7'
- pipeline-script: 'voltha-openonu-go-test-bbsim.groovy'
+ pipeline-script: 'voltha/voltha-2.7/voltha-openonu-go-test-bbsim.groovy'
build-node: 'ubuntu18.04-basebuild-8c-15g'
make-target: openonu-go-adapter-multi-olt-test
make-target-1t4gemtest: 1t4gem-openonu-go-adapter-multi-olt-test
@@ -131,7 +140,7 @@
pons: 2
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-test-DMI'
pipeline-script: 'voltha-DMI-bbsim-tests.groovy'
build-node: 'qct-pod4-node2'
@@ -140,7 +149,7 @@
code-branch: 'master'
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-test-DMI-2.7'
pipeline-script: 'voltha-DMI-bbsim-tests.groovy'
build-node: 'qct-pod4-node2'
@@ -149,7 +158,7 @@
code-branch: 'voltha-2.7'
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-test-bbsim-2.7'
pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
build-node: 'qct-pod4-node2'
@@ -163,7 +172,7 @@
pons: 2
time-trigger: "H H * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-etcd-test'
pipeline-script: 'voltha-system-test-bbsim.groovy'
build-node: 'ubuntu18.04-basebuild-4c-8g'
@@ -173,7 +182,7 @@
pons: 2
time-trigger: "H H/12 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-etcd-test-2.7'
pipeline-script: 'voltha-system-test-bbsim.groovy'
build-node: 'ubuntu18.04-basebuild-4c-8g'
@@ -184,7 +193,7 @@
time-trigger: "H H/12 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-sanity-test-multi-runs'
pipeline-script: 'voltha-go-multi-tests.groovy'
build-node: 'qct-pod4-node2'
@@ -195,7 +204,7 @@
test-runs: 5
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'periodic-voltha-sanity-test-multi-runs-2.7'
pipeline-script: 'voltha-go-multi-tests.groovy'
build-node: 'qct-pod4-node2'
@@ -206,7 +215,7 @@
test-runs: 5
time-trigger: "H H/23 * * *"
- - 'voltha-periodic-test':
+ - 'voltha-periodic-test-kind-voltha-based':
name: 'nightly-voltha-DTflow-sanity-test'
build-node: 'ubuntu18.04-basebuild-4c-8g'
code-branch: 'master'
@@ -285,14 +294,182 @@
default-test-args: '-i sanityORDeleteOLT -i PowerSwitch -X'
- job-template:
+ # as of now this template is only used by the openonu-go periodic test,
+ # in order to use for multiple pipelines we should change it so that
+ # we can specify a list of make targets and iterate over that
id: 'voltha-periodic-test'
name: '{name}'
+ pipeline-script: 'voltha/master/openonu-go-periodic-test-bbsim.groovy'
+ build-node: 'ubuntu18.04-basebuild-8c-15g'
+ test-runs: 1
+ robot-args: ''
+ gerrit-project: ''
+ gerritRefspec: ''
+ work-flow: ''
+ volthaSystemTestsChange: ''
+ volthaHelmChartsChange: ''
+ extraHelmFlags: ''
+ sandbox: true
+ olts: 1
+ make-target: openonu-go-adapter-test
+ make-target-1t4gemtest: 1t4gem-openonu-go-adapter-test
+ make-target-1t8gemtest: 1t8gem-openonu-go-adapter-test
+ make-target-reconciletest: reconcile-openonu-go-adapter-test
+ make-target-reconciledttest: reconcile-openonu-go-adapter-test-dt
+ make-target-reconciletttest: reconcile-openonu-go-adapter-test-tt
+ trigger-comment: vv7CBoQQYYonvaN8xcru
+ time-trigger: 0 0 29 2 *
+
+ description: |
+ <!-- Managed by Jenkins Job Builder -->
+ Created by {id} job-template from ci-management/jjb/voltha-e2e.yaml <br /><br />
+ E2E Validation for Voltha 2.X
+
+ properties:
+ - cord-infra-properties:
+ build-days-to-keep: '{big-build-days-to-keep}'
+ artifact-num-to-keep: '{big-artifact-num-to-keep}'
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ parameters:
+ - string:
+ name: buildNode
+ default: '{build-node}'
+ description: 'Name of the Jenkins node to run the job on'
+
+ - string:
+ name: extraHelmFlags
+ default: '--set onu={onus},pon={pons},{extraHelmFlags}'
+ description: 'Helm flags to pass to ./voltha up'
+
+ # TODO is there a better way to manage the test targets?
+ # maybe we can use a comma separated list?
+ - string:
+ name: makeTarget
+ default: '{make-target}'
+ description: 'Makefile target to invoke during test'
+
+ - string:
+ name: makeFailtestTarget
+ default: '{make-target-failtest}'
+ description: 'Makefile target to invoke during failure/based test'
+
+ - string:
+ name: makeMultiOltTarget
+ default: '{make-target-multipleolt}'
+ description: 'Makefile target to invoke during multiple olt test'
+
+ - string:
+ name: makeErrortestTarget
+ default: '{make-target-errortest}'
+ description: 'Makefile target to invoke during error test'
+
+ - string:
+ name: makeAlarmtestTarget
+ default: '{make-target-alarmtest}'
+ description: 'Makefile target to invoke during alarm test'
+
+ - string:
+ name: make1t4gemTestTarget
+ default: '{make-target-1t4gemtest}'
+ description: 'Makefile target to invoke during 1t4gem test'
+
+ - string:
+ name: make1t8gemTestTarget
+ default: '{make-target-1t8gemtest}'
+ description: 'Makefile target to invoke during 1t8gem test'
+
+ - string:
+ name: makeReconcileTestTarget
+ default: '{make-target-reconciletest}'
+ description: 'Makefile target to invoke during reconcile test'
+
+ - string:
+ name: makeReconcileDtTestTarget
+ default: '{make-target-reconciledttest}'
+ description: 'Makefile target to invoke during reconcile dt test'
+
+ - string:
+ name: makeReconcileTtTestTarget
+ default: '{make-target-reconciletttest}'
+ description: 'Makefile target to invoke during reconcile tt test'
+
+ - string:
+ name: branch
+ default: '{code-branch}'
+ description: 'Repo manifest branch for code checkout'
+
+ - string:
+ name: gerritProject
+ default: '{gerrit-project}'
+ description: 'Name of the Gerrit project'
+
+ - string:
+ name: gerritRefspec
+ default: ''
+ description: 'PatchSet REFSPEC in Gerrit, example value: "refs/changes/79/18779/13"'
+
+ - string:
+ name: extraRobotArgs
+ default: '{robot-args}'
+ description: 'Arguments to pass to robot'
+
+ - string:
+ name: volthaSystemTestsChange
+ default: '{volthaSystemTestsChange}'
+ description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'
+
+ - string:
+ name: volthaHelmChartsChange
+ default: '{volthaHelmChartsChange}'
+ description: 'Download a change for gerrit in the voltha-helm-charts repo, example value: "refs/changes/79/18779/13"'
+
+ - string:
+ name: olts
+ default: '{olts}'
+ description: 'How many BBSim instances to run'
+
+ project-type: pipeline
+ concurrent: true
+
+ dsl: !include-raw-escape: pipeline/{pipeline-script}
+
+ triggers:
+ # patchset jobs will set this to "0 0 29 2 *" (feb 29th, it's once every 4 years)
+ - timed: |
+ TZ=America/Los_Angeles
+ {time-trigger}
+ # periodic jobs will set this to vv7CBoQQYYonvaN8xcru (hopefully no-one will comment with that)
+ - gerrit:
+ server-name: '{gerrit-server-name}'
+ silent-start: false
+ successful-message: "PASSED openonu-go test"
+ failure-message: "FAILED openonu-go test"
+ unstable-message: "UNSTABLE openonu-go test"
+ trigger-on:
+ - comment-added-contains-event:
+ comment-contains-value: '.*{trigger-comment}.*'
+ projects:
+ - project-compare-type: REG_EXP
+ project-pattern: '^(voltha-go|voltha-openolt-adapter|voltha-openonu-adapter-go|ofagent-go|voltha-onos|bbsim)$'
+ branches:
+ - branch-compare-type: REG_EXP
+ branch-pattern: '{all-branches-regexp}'
+
+- job-template:
+ id: 'voltha-periodic-test-kind-voltha-based'
+ name: '{name}'
pipeline-script: 'voltha-go-tests.groovy'
test-runs: 1
robot-args: ''
gerrit-project: ''
work-flow: ''
volthaSystemTestsChange: ''
+ volthaHelmChartsChange: ''
kindVolthaChange: ''
extraHelmFlags: ''
sandbox: true