blob: 06e0e12686a6e3834876ec55f9043d7d1a94e4e2 [file] [log] [blame]
Lionel Jouinc4037892022-11-16 15:53:04 +01001/*
2Copyright (c) 2022 Nordix Foundation
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
Lionel Jouinc0ae7182022-10-24 17:28:37 +020016import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
17
Lionel Jouin1317f9e2022-11-17 11:20:32 +010018node('nordix-nsm-build-ubuntu2204') {
Lionel Jouinc0ae7182022-10-24 17:28:37 +020019 build_number = env.BUILD_NUMBER
20 workspace = env.WORKSPACE
21 ws("${workspace}/${build_number}") {
22 def git_project = params.GIT_PROJECT
23 def current_branch = params.CURRENT_BRANCH
24 def default_branch = params.DEFAULT_BRANCH
25 def next = params.NEXT
26
27 def meridio_version = params.MERIDIO_VERSION
28 def tapa_version = params.TAPA_VERSION
29 def kubernetes_version = params.KUBERNETES_VERSION
30 def nsm_version = params.NSM_VERSION
31 def ip_family = params.IP_FAMILY
Lionel Jouin848fab12022-10-31 17:32:58 +010032 def number_of_workers = params.NUMBER_OF_WORKERS
33 def environment_name = params.ENVIRONMENT_NAME
Lionel Jouinc4037892022-11-16 15:53:04 +010034 def focus = params.FOCUS
35 def skip = params.SKIP
Lionel Jouin848fab12022-10-31 17:32:58 +010036
37 def seed = params.SEED
Lionel Jouinc0ae7182022-10-24 17:28:37 +020038
39 stage('Clone/Checkout') {
40 git branch: default_branch, url: git_project
41 checkout([
42 $class: 'GitSCM',
43 branches: [[name: current_branch]],
44 extensions: [],
45 userRemoteConfigs: [[
46 refspec: '+refs/pull/*/head:refs/remotes/origin/pr/*',
47 url: git_project
48 ]]
49 ])
50 sh 'git show'
51 }
Lionel Jouin1e04de62022-11-18 11:59:18 +010052 timeout(120) {
Lionel Jouinc0ae7182022-10-24 17:28:37 +020053 stage('Environment') {
Lionel Jouin848fab12022-10-31 17:32:58 +010054 currentBuild.description = "Meridio version: $meridio_version / TAPA version: $tapa_version / NSM version: $nsm_version / IP Family: $ip_family / Kubernetes version: $kubernetes_version / Current Branch: $current_branch / Seed: $seed"
Lionel Jouinc0ae7182022-10-24 17:28:37 +020055
Lionel Jouinc4037892022-11-16 15:53:04 +010056 def command = "make -s -C test/e2e/environment/$environment_name/ KUBERNETES_VERSION=$kubernetes_version NSM_VERSION=$nsm_version IP_FAMILY=$ip_family KUBERNETES_WORKERS=$number_of_workers MERIDIO_VERSION=$meridio_version TAPA_VERSION=$tapa_version"
Lionel Jouinf26ac952022-10-25 18:38:18 +020057 try {
Lionel Jouinc4037892022-11-16 15:53:04 +010058 ExecSh(command).call()
Lionel Jouind3f88422022-11-21 10:33:47 +010059 } catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
60 currentBuild.result = 'ABORTED'
Lionel Jouinf26ac952022-10-25 18:38:18 +020061 } catch (Exception e) {
Lionel Jouin848fab12022-10-31 17:32:58 +010062 unstable 'Environment setup failed'
63 currentBuild.result = 'FAILURE'
Lionel Jouinf26ac952022-10-25 18:38:18 +020064 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +020065 }
66 stage('E2E') {
Lionel Jouind3f88422022-11-21 10:33:47 +010067 if (currentBuild.result != 'FAILURE' && currentBuild.result != 'ABORTED') {
Lionel Jouinc4037892022-11-16 15:53:04 +010068 def command = "make e2e E2E_PARAMETERS=\"\$(cat ./test/e2e/environment/$environment_name/$ip_family/config.txt | tr '\\n' ' ')\" E2E_SEED=$seed E2E_FOCUS=\"$focus\" E2E_SKIP=\"$skip\""
Lionel Jouin848fab12022-10-31 17:32:58 +010069 try {
Lionel Jouinc4037892022-11-16 15:53:04 +010070 ExecSh(command).call()
71 currentBuild.result = 'SUCCESS'
Lionel Jouind3f88422022-11-21 10:33:47 +010072 } catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
73 currentBuild.result = 'ABORTED'
Lionel Jouin848fab12022-10-31 17:32:58 +010074 } catch (Exception e) {
75 unstable 'E2E Tests failed'
76 currentBuild.result = 'FAILURE'
77 }
78 } else {
79 Utils.markStageSkippedForConditional('E2E')
Lionel Jouinf26ac952022-10-25 18:38:18 +020080 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +020081 }
82 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +020083 stage('Report') {
Lionel Jouin848fab12022-10-31 17:32:58 +010084 try {
85 Report().call()
Lionel Jouind3f88422022-11-21 10:33:47 +010086 } catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
87 currentBuild.result = 'ABORTED'
Lionel Jouin848fab12022-10-31 17:32:58 +010088 } catch (Exception e) {
89 unstable 'Failed to create the report'
90 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +020091 }
92 stage('Next') {
Lionel Jouinc4037892022-11-16 15:53:04 +010093 if (next == true && currentBuild.result != 'ABORTED') {
94 Next(next, number_of_workers, environment_name, focus, skip, current_branch).call()
95 } else {
96 Utils.markStageSkippedForConditional('Next')
97 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +020098 }
Lionel Jouinf77e9e22022-10-26 13:14:51 +020099 stage('Cleanup') {
100 Cleanup()
101 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200102 }
103}
104
Lionel Jouinc4037892022-11-16 15:53:04 +0100105def Next(next, number_of_workers, environment_name, focus, skip, current_branch) {
106 return {
Lionel Jouind3f88422022-11-21 10:33:47 +0100107 def meridio_version = GetMeridioVersion(environment_name)
108 def tapa_version = GetTAPAVersion(environment_name)
109 def nsm_version = GetNSMVersion(environment_name)
110 def kubernetes_version = GetKubernetesVersion(environment_name)
111 def ip_family = GetIPFamily(environment_name)
Lionel Jouinc4037892022-11-16 15:53:04 +0100112 def seed = GetSeed()
113 echo "Meridio version: $meridio_version / TAPA version: $tapa_version / NSM version: $nsm_version / IP Family: $ip_family / Kubernetes version: $kubernetes_version / Seed: $seed"
114 build job: 'meridio-e2e-test-kind', parameters: [
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200115 string(name: 'NEXT', value: 'true'),
116 string(name: 'MERIDIO_VERSION', value: "$meridio_version"),
117 string(name: 'TAPA_VERSION', value: "$tapa_version"),
118 string(name: 'KUBERNETES_VERSION', value: "$kubernetes_version"),
119 string(name: 'NSM_VERSION', value: "$nsm_version"),
Lionel Jouin848fab12022-10-31 17:32:58 +0100120 string(name: 'IP_FAMILY', value: "$ip_family"),
121 string(name: 'NUMBER_OF_WORKERS', value: "$number_of_workers"),
122 string(name: 'ENVIRONMENT_NAME', value: "$environment_name"),
Lionel Jouinc4037892022-11-16 15:53:04 +0100123 string(name: 'SEED', value: "$seed"),
124 string(name: 'FOCUS', value: "$focus"),
125 string(name: 'SKIP', value: "$skip"),
126 string(name: 'CURRENT_BRANCH', value: "$current_branch"),
127 string(name: 'DRY_RUN', value: env.DRY_RUN)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200128 ], wait: false
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200129 }
130}
131
Lionel Jouind3f88422022-11-21 10:33:47 +0100132def GetMeridioVersion(environment_name) {
133 def number_of_versions = sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.Meridio[]' | wc -l", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200134 def index_of_version_temp = sh(script: "shuf -i 1-$number_of_versions -n1", returnStdout: true).trim()
135 def index_of_version = sh(script: "expr $index_of_version_temp - 1 || true", returnStdout: true).trim()
Lionel Jouind3f88422022-11-21 10:33:47 +0100136 return sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.Meridio[$index_of_version]'", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200137}
138
Lionel Jouind3f88422022-11-21 10:33:47 +0100139def GetTAPAVersion(environment_name) {
140 def number_of_versions = sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.TAPA[]' | wc -l", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200141 def index_of_version_temp = sh(script: "shuf -i 1-$number_of_versions -n1", returnStdout: true).trim()
142 def index_of_version = sh(script: "expr $index_of_version_temp - 1 || true", returnStdout: true).trim()
Lionel Jouind3f88422022-11-21 10:33:47 +0100143 return sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.TAPA[$index_of_version]'", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200144}
145
Lionel Jouind3f88422022-11-21 10:33:47 +0100146def GetNSMVersion(environment_name) {
147 def number_of_versions = sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.NSM[]' | wc -l", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200148 def index_of_version_temp = sh(script: "shuf -i 1-$number_of_versions -n1", returnStdout: true).trim()
149 def index_of_version = sh(script: "expr $index_of_version_temp - 1 || true", returnStdout: true).trim()
Lionel Jouind3f88422022-11-21 10:33:47 +0100150 return sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.NSM[$index_of_version]'", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200151}
152
Lionel Jouind3f88422022-11-21 10:33:47 +0100153def GetKubernetesVersion(environment_name) {
154 def number_of_versions = sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.Kubernetes[]' | wc -l", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200155 def index_of_version_temp = sh(script: "shuf -i 1-$number_of_versions -n1", returnStdout: true).trim()
156 def index_of_version = sh(script: "expr $index_of_version_temp - 1 || true", returnStdout: true).trim()
Lionel Jouind3f88422022-11-21 10:33:47 +0100157 return sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.Kubernetes[$index_of_version]'", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200158}
159
Lionel Jouind3f88422022-11-21 10:33:47 +0100160def GetIPFamily(environment_name) {
161 def number_of_ip_family = sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.IP-Family[]' | wc -l", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200162 def index_of_ip_family_temp = sh(script: "shuf -i 1-$number_of_ip_family -n1", returnStdout: true).trim()
163 def index_of_ip_family = sh(script: "expr $index_of_ip_family_temp - 1 || true", returnStdout: true).trim()
Lionel Jouind3f88422022-11-21 10:33:47 +0100164 return sh(script: "cat test/e2e/environment/$environment_name/test-scope.yaml | yq '.IP-Family[$index_of_ip_family]'", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200165}
166
Lionel Jouin848fab12022-10-31 17:32:58 +0100167def GetSeed() {
168 return sh(script: 'shuf -i 1-2147483647 -n1', returnStdout: true).trim()
169}
170
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200171// http://JENKINS_URL/job/meridio-e2e-test-kind/api/json?tree=allBuilds[status,timestamp,id,result,description]{0,9}&pretty=true
172def Report() {
173 return {
174 def jenkins_url = 'jenkins.nordix.org'
175
Lionel Jouinf26ac952022-10-25 18:38:18 +0200176 def success = ''
177 try {
178 success = sh(script: """
Lionel Jouinc4037892022-11-16 15:53:04 +0100179 data=\$(curl -s -L "http://$jenkins_url/job/meridio-e2e-test-kind/api/json?tree=allBuilds\\[status,timestamp,id,result,description\\]\\{0,1000\\}&pretty=true")
Lionel Jouinf26ac952022-10-25 18:38:18 +0200180 success=\$(echo \"\$data\" | jq -r '.allBuilds[] | select(.result == \"SUCCESS\") | [.description] | @tsv' | grep -v \"^\$\")
181 echo \$success
182 """, returnStdout: true).trim()
183 } catch (Exception e) {
184 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200185
Lionel Jouinf26ac952022-10-25 18:38:18 +0200186 def failure = ''
187 try {
188 failure = sh(script: """
Lionel Jouinc4037892022-11-16 15:53:04 +0100189 data=\$(curl -s -L "http://$jenkins_url/job/meridio-e2e-test-kind/api/json?tree=allBuilds\\[status,timestamp,id,result,description\\]\\{0,1000\\}&pretty=true")
Lionel Jouinf26ac952022-10-25 18:38:18 +0200190 failure=\$(echo \"\$data\" | jq -r '.allBuilds[] | select(.result == \"FAILURE\") | [.description] | @tsv' | grep -v \"^\$\")
191 echo \$failure
192 """, returnStdout: true).trim()
193 } catch (Exception e) {
194 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200195
196 ReportMeridio(success, failure).call()
197 ReportTAPA(success, failure).call()
198 ReportNSM(success, failure).call()
199 ReportIPFamily(success, failure).call()
200 ReportKubernetes(success, failure).call()
Lionel Jouinc4037892022-11-16 15:53:04 +0100201
202 try {
Lionel Jouin1e04de62022-11-18 11:59:18 +0100203 archiveArtifacts artifacts: '_output/**/*.*', followSymlinks: false
Lionel Jouinc4037892022-11-16 15:53:04 +0100204 } catch (Exception e) {
205 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200206 }
207}
208
209def ReportMeridio(success, failure) {
210 return {
211 def meridio_success = sh(script: "echo \"$success\" | grep -oP '(?<=Meridio version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s %s 0\\n\", \$2, \$1 }'", returnStdout: true).trim()
212 def meridio_failure = sh(script: "echo \"$failure\" | grep -oP '(?<=Meridio version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s 0 %s\\n\", \$2, \$1 }'", returnStdout: true).trim()
Lionel Jouinf26ac952022-10-25 18:38:18 +0200213 def meridio = sh(script: "echo \"$meridio_success\\n$meridio_failure\" | grep -v '^\$' | awk '{ success[\$1] += \$2 ; failure[\$1] += \$3 } END { for(elem in success) print elem, success[elem], failure[elem] }' | sort -k1", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200214 def formatted = sh(script: "echo \"$meridio\" | awk '{ printf \"%s (✅ %s / ❌ %s)\\n\", \$1, \$2, \$3 }' | sed ':a;N;\$!ba;s/\\n/ | /g'", returnStdout: true).trim()
215 echo "Meridio: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100216 badge('meridio-e2e-kind-meridio', 'Meridio', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200217 }
218}
219
220def ReportTAPA(success, failure) {
221 return {
222 def tapa_success = sh(script: "echo \"$success\" | grep -oP '(?<=TAPA version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s %s 0\\n\", \$2, \$1 }'", returnStdout: true).trim()
223 def tapa_failure = sh(script: "echo \"$failure\" | grep -oP '(?<=TAPA version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s 0 %s\\n\", \$2, \$1 }'", returnStdout: true).trim()
Lionel Jouinf26ac952022-10-25 18:38:18 +0200224 def tapa = sh(script: "echo \"$tapa_success\\n$tapa_failure\" | grep -v '^\$' | awk '{ success[\$1] += \$2 ; failure[\$1] += \$3 } END { for(elem in success) print elem, success[elem], failure[elem] }' | sort -k1", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200225 def formatted = sh(script: "echo \"$tapa\" | awk '{ printf \"%s (✅ %s / ❌ %s)\\n\", \$1, \$2, \$3 }' | sed ':a;N;\$!ba;s/\\n/ | /g'", returnStdout: true).trim()
226 echo "TAPA: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100227 badge('meridio-e2e-kind-tapa', 'TAPA', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200228 }
229}
230
231def ReportNSM(success, failure) {
232 return {
233 def nsm_success = sh(script: "echo \"$success\" | grep -oP '(?<=NSM version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s %s 0\\n\", \$2, \$1 }'", returnStdout: true).trim()
234 def nsm_failure = sh(script: "echo \"$failure\" | grep -oP '(?<=NSM version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s 0 %s\\n\", \$2, \$1 }'", returnStdout: true).trim()
Lionel Jouinf26ac952022-10-25 18:38:18 +0200235 def nsm = sh(script: "echo \"$nsm_success\\n$nsm_failure\" | grep -v '^\$' | awk '{ success[\$1] += \$2 ; failure[\$1] += \$3 } END { for(elem in success) print elem, success[elem], failure[elem] }' | sort -k1", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200236 def formatted = sh(script: "echo \"$nsm\" | awk '{ printf \"%s (✅ %s / ❌ %s)\\n\", \$1, \$2, \$3 }' | sed ':a;N;\$!ba;s/\\n/ | /g'", returnStdout: true).trim()
237 echo "NSM: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100238 badge('meridio-e2e-kind-nsm', 'NSM', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200239 }
240}
241
242def ReportIPFamily(success, failure) {
243 return {
244 def ip_family_success = sh(script: "echo \"$success\" | grep -oP '(?<=IP Family: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s %s 0\\n\", \$2, \$1 }'", returnStdout: true).trim()
245 def ip_family_failure = sh(script: "echo \"$failure\" | grep -oP '(?<=IP Family: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s 0 %s\\n\", \$2, \$1 }'", returnStdout: true).trim()
Lionel Jouinf26ac952022-10-25 18:38:18 +0200246 def ip_family = sh(script: "echo \"$ip_family_success\\n$ip_family_failure\" | grep -v '^\$' | awk '{ success[\$1] += \$2 ; failure[\$1] += \$3 } END { for(elem in success) print elem, success[elem], failure[elem] }' | sort -k1", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200247 def formatted = sh(script: "echo \"$ip_family\" | awk '{ printf \"%s (✅ %s / ❌ %s)\\n\", \$1, \$2, \$3 }' | sed ':a;N;\$!ba;s/\\n/ | /g'", returnStdout: true).trim()
248 echo "IP Family: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100249 badge('meridio-e2e-kind-ip-family', 'IP Family', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200250 }
251}
252
253def ReportKubernetes(success, failure) {
254 return {
255 def kubernetes_success = sh(script: "echo \"$success\" | grep -oP '(?<=Kubernetes version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s %s 0\\n\", \$2, \$1 }'", returnStdout: true).trim()
256 def kubernetes_failure = sh(script: "echo \"$failure\" | grep -oP '(?<=Kubernetes version: ).*?(?=\\/)' | sort | uniq -c | awk '{ printf \"%s 0 %s\\n\", \$2, \$1 }'", returnStdout: true).trim()
Lionel Jouinf26ac952022-10-25 18:38:18 +0200257 def kubernetes = sh(script: "echo \"$kubernetes_success\\n$kubernetes_failure\" | grep -v '^\$' | awk '{ success[\$1] += \$2 ; failure[\$1] += \$3 } END { for(elem in success) print elem, success[elem], failure[elem] }' | sort -k1", returnStdout: true).trim()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200258 def formatted = sh(script: "echo \"$kubernetes\" | awk '{ printf \"%s (✅ %s / ❌ %s)\\n\", \$1, \$2, \$3 }' | sed ':a;N;\$!ba;s/\\n/ | /g'", returnStdout: true).trim()
259 echo "Kubernetes: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100260 badge('meridio-e2e-kind-kubernetes', 'Kubernetes', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200261 }
262}
263
Lionel Jouinc4037892022-11-16 15:53:04 +0100264def badge(id, subject, message) {
265 addEmbeddableBadgeConfiguration(id: "${id}", subject: "${subject}", color: '#0B1F67', status: "$message")
266 sh """
267 mkdir -p _output
268 echo '{' >> _output/${id}.json
269 echo '"schemaVersion": 1,' >> _output/${id}.json
270 echo '"label": "${subject}",' >> _output/${id}.json
271 echo '"message": "${message}",' >> _output/${id}.json
272 echo '"color": "#0B1F67"' >> _output/${id}.json
273 echo '}' >> _output/${id}.json
274 """
275}
276
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200277// Raise error in Jenkins job
278def Error(e) {
279 return {
280 Cleanup()
281 error e
282 }
283}
284
285// Cleanup directory and kind cluster
286def Cleanup() {
Lionel Jouinc4037892022-11-16 15:53:04 +0100287 def command = 'make -s -C docs/demo/scripts/kind/ clean'
288 ExecSh(command).call()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200289 cleanWs()
290}
291
292// Execute command
293def ExecSh(command) {
294 return {
Lionel Jouinc4037892022-11-16 15:53:04 +0100295 if (env.DRY_RUN != 'true') {
296 sh """
297 . \${HOME}/.profile
298 ${command}
299 """
300 } else {
301 echo "${command}"
302 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200303 }
304}