blob: bba546726c74df5b454f56c01807d8610df71b09 [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 {
Lionel Jouin0c44c682023-02-16 18:14:07 +010085 Report(build_number).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
Lionel Jouin0c44c682023-02-16 18:14:07 +0100172def Report(id) {
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200173 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
Lionel Jouin0c44c682023-02-16 18:14:07 +0100202 sh 'printenv > _output/parameters.txt'
203 sh "echo 'RESULT=$currentBuild.result' >> _output/parameters.txt"
204
Lionel Jouinc4037892022-11-16 15:53:04 +0100205 try {
Lionel Jouin1e04de62022-11-18 11:59:18 +0100206 archiveArtifacts artifacts: '_output/**/*.*', followSymlinks: false
Lionel Jouin0c44c682023-02-16 18:14:07 +0100207 sh "tar -czvf ${id}.tar.gz -C _output ."
208 withCredentials([string(credentialsId: 'nsm-nordix-artifactory-api-key', variable: 'API_KEY')]) {
Lionel Jouin716e1ce2023-02-20 17:04:24 +0100209 sh "curl -H 'X-JFrog-Art-Api:${API_KEY}' -T ${id}.tar.gz 'https://artifactory.nordix.org/artifactory/cloud-native/meridio/e2e-test-reports/${id}.tar.gz'"
Lionel Jouin0c44c682023-02-16 18:14:07 +0100210 }
Lionel Jouinc4037892022-11-16 15:53:04 +0100211 } catch (Exception e) {
212 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200213 }
214}
215
216def ReportMeridio(success, failure) {
217 return {
218 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()
219 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 +0200220 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 +0200221 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()
222 echo "Meridio: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100223 badge('meridio-e2e-kind-meridio', 'Meridio', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200224 }
225}
226
227def ReportTAPA(success, failure) {
228 return {
229 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()
230 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 +0200231 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 +0200232 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()
233 echo "TAPA: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100234 badge('meridio-e2e-kind-tapa', 'TAPA', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200235 }
236}
237
238def ReportNSM(success, failure) {
239 return {
240 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()
241 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 +0200242 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 +0200243 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()
244 echo "NSM: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100245 badge('meridio-e2e-kind-nsm', 'NSM', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200246 }
247}
248
249def ReportIPFamily(success, failure) {
250 return {
251 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()
252 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 +0200253 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 +0200254 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()
255 echo "IP Family: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100256 badge('meridio-e2e-kind-ip-family', 'IP Family', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200257 }
258}
259
260def ReportKubernetes(success, failure) {
261 return {
262 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()
263 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 +0200264 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 +0200265 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()
266 echo "Kubernetes: $formatted"
Lionel Jouinc4037892022-11-16 15:53:04 +0100267 badge('meridio-e2e-kind-kubernetes', 'Kubernetes', formatted)
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200268 }
269}
270
Lionel Jouinc4037892022-11-16 15:53:04 +0100271def badge(id, subject, message) {
272 addEmbeddableBadgeConfiguration(id: "${id}", subject: "${subject}", color: '#0B1F67', status: "$message")
273 sh """
274 mkdir -p _output
275 echo '{' >> _output/${id}.json
276 echo '"schemaVersion": 1,' >> _output/${id}.json
277 echo '"label": "${subject}",' >> _output/${id}.json
278 echo '"message": "${message}",' >> _output/${id}.json
279 echo '"color": "#0B1F67"' >> _output/${id}.json
280 echo '}' >> _output/${id}.json
281 """
282}
283
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200284// Raise error in Jenkins job
285def Error(e) {
286 return {
287 Cleanup()
288 error e
289 }
290}
291
292// Cleanup directory and kind cluster
293def Cleanup() {
Lionel Jouinc4037892022-11-16 15:53:04 +0100294 def command = 'make -s -C docs/demo/scripts/kind/ clean'
295 ExecSh(command).call()
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200296 cleanWs()
297}
298
299// Execute command
300def ExecSh(command) {
301 return {
Lionel Jouinc4037892022-11-16 15:53:04 +0100302 if (env.DRY_RUN != 'true') {
303 sh """
304 . \${HOME}/.profile
305 ${command}
306 """
307 } else {
308 echo "${command}"
309 }
Lionel Jouinc0ae7182022-10-24 17:28:37 +0200310 }
311}