blob: 978cd55e2d7320ff9f5c8e0538337e7dc07af2f2 [file] [log] [blame]
Suchitra Vemuric365ebe2018-06-01 00:04:16 -07001// Copyright 2017-present Open Networking Foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15pod_config = null
16
17node ("${TestNodeName}") {
18 timeout (time: 240) {
19 stage ("Parse deployment configuration file") {
20 sh returnStdout: true, script: 'rm -rf ${configRepoBaseDir}'
21 sh returnStdout: true, script: 'git clone -b ${branch} ${configRepoUrl}'
22 deployment_config = readYaml file: "${configRepoBaseDir}${configRepoFile}"
Suchitra Vemuric365ebe2018-06-01 00:04:16 -070023 }
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -070024
25 stage('Export pod config') {
26 timeout(10) {
27 try {
28 sh """
29 cd /home/cord
30 rm -rf /home/cord/helm-charts
31 git clone -b ${branch} https://gerrit.opencord.org/helm-charts
32 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
33 kubectl get pods
34 """
35 } catch(error) { currentBuild.result = 'FAILURE' }
36 }
Suchitra Vemuric365ebe2018-06-01 00:04:16 -070037 }
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -070038 stage('Clean up') {
39 timeout(10) {
40 try {
41 sh """
42 cd /home/cord/helm-charts
43 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
44 helm ls | grep onos-voltha && helm delete --purge onos-voltha
45 helm ls | grep onos-fabric && helm delete --purge onos-fabric
46 helm ls | grep voltha && helm delete --purge voltha
47 helm ls | grep rcord-lite && helm delete --purge rcord-lite
48 helm ls | grep xos-core && helm delete --purge xos-core
Suchitra Vemuri9c4ffec2018-06-08 17:27:47 -070049 sleep 80
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -070050 """
51 } catch(error) { currentBuild.result = 'FAILURE' }
52 }
53 }
54 stage('Install xos-core and rcord-lite') {
55 timeout(10) {
56 try {
57 sh """
58 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
59 cd /home/cord/helm-charts
60 helm dep update xos-core
61 helm install -n xos-core xos-core
62 helm dep update xos-profiles/rcord-lite
63 helm install -n rcord-lite xos-profiles/rcord-lite
64 """
65 } catch(error) { currentBuild.result = 'FAILURE' }
66 }
67 }
68 stage('Install voltha') {
69 timeout(10) {
70 try {
71 sh """
72 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
73 cd /home/cord/helm-charts/voltha
74 helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
75 helm dep build
76 cd /home/cord/helm-charts
77 helm install -n voltha --set etcd-operator.customResources.createEtcdClusterCRD=false voltha
78 helm upgrade --set etcd-operator.customResources.createEtcdClusterCRD=true voltha ./voltha
79 """
80 } catch(error) { currentBuild.result = 'FAILURE' }
81 }
82 }
83 stage('Install ONOS-Voltha and ONOS-Fabric') {
84 timeout(10) {
85 try {
86 sh """
87 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
88 cd /home/cord/helm-charts
89 helm install -n onos-fabric -f configs/onos-fabric.yaml onos
90 helm install -n onos-voltha -f configs/onos-voltha.yaml onos
Suchitra Vemuri9c4ffec2018-06-08 17:27:47 -070091 sleep 60
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -070092 """
93 } catch(error) { currentBuild.result = 'FAILURE' }
94 }
95 }
96 stage('Download cord-tester repo') {
97 timeout(10) {
98 try {
99 sh """
100 rm -rf /home/cord/cord-tester
101 cd /home/cord/
102 git clone -b ${branch} https://gerrit.opencord.org/cord-tester
103 """
104 } catch(error) { currentBuild.result = 'FAILURE' }
105 }
106 }
Suchitra Vemuri9c4ffec2018-06-08 17:27:47 -0700107 stage('Validate Helm Chart Install') {
108 timeout(10) {
109 try {
110 sh """
111 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
112 cd /home/cord/cord-tester/src/test/robot/
113 rm -rf Log/ || true
114 pybot -d Log -T SanityK8POD.robot || all_passed=false
115 if [ "\\\$all_passed" = true ]; then exit 0; else exit 1; fi
116 """
117 } catch(error) { currentBuild.result = 'FAILURE' }
118 }
119 }
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -0700120 stage('Verify E2E XOS') {
121 timeout(10) {
122 try {
123 sh """
124 export KUBECONFIG=/home/cord/${deployment_config.pod_config}
Suchitra Vemuri9c4ffec2018-06-08 17:27:47 -0700125 chameleon=\$(kubectl get pod | grep chameleon)
126 echo $chameleon
127 kubectl delete pod $chameleon
128 kubectl get pods
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -0700129 cd /home/cord/cord-tester/src/test/cord-api/Properties/
130 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'${deployment_config.node1.ip}\'/\" RestApiProperties.py
131 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'30006\'/\" RestApiProperties.py
132 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
133 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
134 cd /home/cord/cord-tester/src/test/cord-api/Tests
135 rm -rf Log/ || true
136 pybot -d Log -T VOLTDevice_Test.txt || all_passed=false
137 pybot -d Log -T RCORDLite_E2ETest.txt || all_passed=false
138 if [ "\\\$all_passed" = true ]; then exit 0; else exit 1; fi
139 """
140 } catch(error) { currentBuild.result = 'FAILURE' }
141 }
142 }
143 stage('Publish') {
Suchitra Vemuric365ebe2018-06-01 00:04:16 -0700144 try {
145 sh """
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -0700146 if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs;
147 mkdir RobotLogs/TestDoc || true
Suchitra Vemuri9c4ffec2018-06-08 17:27:47 -0700148 cp -r /home/cord/cord-tester/src/test/robot/Log/* ./RobotLogs || true
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -0700149 cp -r /home/cord/cord-tester/src/test/cord-api/Tests/Log/* ./RobotLogs || true
Suchitra Vemuric365ebe2018-06-01 00:04:16 -0700150 """
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -0700151 step([$class: 'RobotPublisher',
152 disableArchiveOutput: false,
153 logFileName: 'RobotLogs/log*.html',
154 otherFiles: '',
155 outputFileName: 'RobotLogs/output*.xml',
156 outputPath: '.',
157 passThreshold: 100,
158 reportFileName: 'RobotLogs/report*.html',
159 unstableThreshold: 0])
160 } catch(error) {}
Suchitra Vemuric365ebe2018-06-01 00:04:16 -0700161 }
Suchitra Vemuri2c1896a2018-06-04 23:43:16 -0700162 step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "${notificationEmail}", sendToIndividuals: false])
Suchitra Vemuric365ebe2018-06-01 00:04:16 -0700163 }
Suchitra Vemuric365ebe2018-06-01 00:04:16 -0700164}
Suchitra Vemuri9c4ffec2018-06-08 17:27:47 -0700165