ecb3cdca46dbc668952ee05a1f84fb9934563f43
[releng.git] / jjb / functest / xtesting-pi.yaml
1 ---
2 - xtesting-pi-containers: &xtesting-pi-containers
3     name: 'xtesting-pi-containers'
4     repo: '{repo}'
5     port: '{port}'
6     container: '{container}'
7     tag: '{tag}'
8
9 - xtesting-pi-params: &xtesting-pi-params
10     name: 'xtesting-pi-params'
11     tag:
12       - latest:
13           node: opnfv-build
14       - 2023.1:
15           node: opnfv-build
16       - zed:
17           node: opnfv-build
18       - yoga:
19           node: opnfv-build
20       - xena:
21           node: opnfv-build
22       - wallaby:
23           node: opnfv-build
24       - arm-latest:
25           node: opnfv-build
26       - arm-2.23.1:
27           node: opnfv-build
28       - arm-zed:
29           node: opnfv-build
30       - arm-yoga:
31           node: opnfv-build
32       - arm-xena:
33           node: opnfv-build
34       - arm-wallaby:
35           node: opnfv-build
36       - arm64-latest:
37           node: opnfv-build
38       - arm64-2023.1:
39           node: opnfv-build
40       - arm64-zed:
41           node: opnfv-build
42       - arm64-yoga:
43           node: opnfv-build
44       - arm64-xena:
45           node: opnfv-build
46       - arm64-wallaby:
47           node: opnfv-build
48
49 - xtesting-pi-ollivier-xtesting-params: &xtesting-pi-ollivier-xtesting-params
50     name: 'xtesting-pi-ollivier-xtesting-params'
51     repo: 'ollivier'
52     container: 'xtesting'
53     port:
54     tag:
55       - latest:
56           node: opnfv-build
57       - 2023.1:
58           node: opnfv-build
59       - zed:
60           node: opnfv-build
61       - yoga:
62           node: opnfv-build
63       - xena:
64           node: opnfv-build
65       - wallaby:
66           node: opnfv-build
67       - arm-latest:
68           node: opnfv-build
69       - arm-2.23.1:
70           node: opnfv-build
71       - arm-zed:
72           node: opnfv-build
73       - arm-yoga:
74           node: opnfv-build
75       - arm-xena:
76           node: opnfv-build
77       - arm-wallaby:
78           node: opnfv-build
79       - arm64-latest:
80           node: opnfv-build
81       - arm64-2023.1:
82           node: opnfv-build
83       - arm64-zed:
84           node: opnfv-build
85       - arm64-yoga:
86           node: opnfv-build
87       - arm64-xena:
88           node: opnfv-build
89       - arm64-wallaby:
90           node: opnfv-build
91
92 - xtesting-pi-jobs: &xtesting-pi-jobs
93     name: 'xtesting-pi-jobs'
94     current-parameters: true
95
96 - parameter:
97     name: xtesting-pi-node
98     parameters:
99       - label:
100           name: node
101           default: '{node}'
102
103 - parameter:
104     name: xtesting-pi-build_tag
105     parameters:
106       - random-string:
107           name: build_tag
108
109 - xtesting-pi-run-containers: &xtesting-pi-run-containers
110     name: 'xtesting-pi-run-containers'
111     <<: *xtesting-pi-containers
112     privileged: '{privileged}'
113     volumes: '{volumes}'
114     env: '{env}'
115     network: '{network}'
116     uid: '{uid}'
117     gid: '{gid}'
118     published_ports: '{published_ports}'
119
120 - builder:
121     name: xtesting-pi-pull-containers
122     builders:
123       - shell: |
124           set +x
125           if [ "{repo}" = "_" ]; then
126             image={container}:{tag}
127           elif [ "{port}" = "None" ]; then
128             image={repo}/{container}:{tag}
129           else
130             image={repo}:{port}/{container}:{tag}
131           fi
132           sudo docker pull $image
133
134 - builder:
135     name: xtesting-pi-run-containers
136     builders:
137       - shell: |
138           set +x
139           volumes=;
140           if [ "{volumes}" != "None" ]; then
141             for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \
142               do volumes="-v $i $volumes"; done
143           fi
144           env=;
145           if [ "{env}" != "None" ]; then
146             for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \
147               do env="-e $i $env"; done
148           fi
149           published_ports=;
150           if [ "{published_ports}" != "None" ]; then
151             for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \
152               do published_ports="-p $i $published_ports"; done
153           fi
154           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true
155           if [ "{repo}" = "_" ]; then
156             image={container}:{tag}
157           elif [ "{port}" = "None" ]; then
158             image={repo}/{container}:{tag}
159           else
160             image={repo}:{port}/{container}:{tag}
161           fi
162           sudo mkdir -p $WORKSPACE/results
163           sudo chown {uid}:{gid} $WORKSPACE/results
164           sudo docker run --rm \
165             --privileged={privileged} \
166             --network={network} \
167             $volumes \
168             $env \
169             $published_ports \
170             -e S3_ENDPOINT_URL=https://storage.googleapis.com \
171             -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
172             -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
173             -v /home/opnfv/xtesting/.boto:/etc/boto.cfg \
174             -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \
175             -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \
176             -e NODE_NAME=$node \
177             -e BUILD_TAG=$BUILD_TAG \
178             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
179             $image run_tests -t {test} -p -r
180
181 - builder:
182     name: xtesting-pi-remove-images
183     builders:
184       - shell: |
185           set +x
186           if [ "{repo}" = "_" ]; then
187             image={container}:{tag}
188           elif [ "{port}" = "None" ]; then
189             image={repo}/{container}:{tag}
190           else
191             image={repo}:{port}/{container}:{tag}
192           fi
193           sudo docker rmi $image || true
194
195 - job-template:
196     name: 'xtesting-pi-ollivier-xtesting-{tag}-pull'
197     parameters:
198       - xtesting-pi-node:
199           node: '{node}'
200     builders:
201       - xtesting-pi-pull-containers:
202           <<: *xtesting-pi-containers
203
204 - project:
205     name: 'xtesting-pi-ollivier-xtesting-pull'
206     <<: *xtesting-pi-ollivier-xtesting-params
207     jobs:
208       - 'xtesting-pi-ollivier-xtesting-{tag}-pull'
209
210 - job-template:
211     name: 'xtesting-pi-ollivier-xtesting-{tag}-rmi'
212     parameters:
213       - xtesting-pi-node:
214           node: '{node}'
215     builders:
216       - xtesting-pi-remove-images:
217           <<: *xtesting-pi-containers
218
219 - project:
220     name: 'xtesting-pi-ollivier-xtesting-rmi'
221     <<: *xtesting-pi-ollivier-xtesting-params
222     jobs:
223       - 'xtesting-pi-ollivier-xtesting-{tag}-rmi'
224
225 - job-template:
226     name: 'xtesting-pi-ollivier-xtesting-{tag}-{test}-run'
227     parameters:
228       - xtesting-pi-node:
229           node: '{node}'
230       - xtesting-pi-build_tag:
231           build_tag: ''
232     builders:
233       - xtesting-pi-run-containers:
234           <<: *xtesting-pi-run-containers
235           test: '{test}'
236
237 - project:
238     name: 'xtesting-pi-ollivier-xtesting'
239     <<: *xtesting-pi-ollivier-xtesting-params
240     volumes:
241     env:
242     published_ports:
243     container: 'xtesting'
244     test:
245       - first
246       - second
247       - third
248       - fourth
249       - fifth
250       - sixth
251       - eighth
252       - nineth
253     privileged: 'false'
254     network: bridge
255     uid: 1000
256     gid: 1000
257     exclude:
258       - tag: wallaby
259         test: nineth
260       - tag: xena
261         test: nineth
262     jobs:
263       - 'xtesting-pi-ollivier-xtesting-{tag}-{test}-run'
264
265 - builder:
266     name: xtesting-pi-zip
267     builders:
268       - shell: |
269           set +x
270           volumes=;
271           if [ "{volumes}" != "None" ]; then
272             for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \
273               do volumes="-v $i $volumes"; done
274           fi
275           env=;
276           if [ "{env}" != "None" ]; then
277             for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \
278               do env="-e $i $env"; done
279           fi
280           published_ports=;
281           if [ "{published_ports}" != "None" ]; then
282             for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \
283               do published_ports="-p $i $published_ports"; done
284           fi
285           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true
286           if [ "{repo}" = "_" ]; then
287             image={container}:{tag}
288           elif [ "{port}" = "None" ]; then
289             image={repo}/{container}:{tag}
290           else
291             image={repo}:{port}/{container}:{tag}
292           fi
293           sudo mkdir -p $WORKSPACE/results
294           sudo chown {uid}:{gid} $WORKSPACE/results
295           sudo docker run --rm \
296             --privileged={privileged} \
297             --network={network} \
298             $volumes \
299             $env \
300             $published_ports \
301             -e S3_ENDPOINT_URL=https://storage.googleapis.com \
302             -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting \
303             -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting \
304             -v /home/opnfv/xtesting/.boto:/etc/boto.cfg \
305             -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \
306             -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \
307             -e NODE_NAME=$node \
308             -e BUILD_TAG=$BUILD_TAG \
309             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
310             $image zip_campaign
311
312 - job-template:
313     name: 'xtesting-pi-{tag}-zip'
314     parameters:
315       - xtesting-pi-node:
316           node: '{node}'
317       - xtesting-pi-build_tag:
318           build_tag: ''
319     builders:
320       - xtesting-pi-zip:
321           <<: *xtesting-pi-run-containers
322
323 - project:
324     name: 'xtesting-pi-{tag}-zip'
325     <<: *xtesting-pi-ollivier-xtesting-params
326     volumes:
327     env:
328     published_ports:
329     container: 'xtesting'
330     privileged: 'false'
331     network: bridge
332     uid: 1000
333     gid: 1000
334     jobs:
335       - 'xtesting-pi-{tag}-zip'
336
337 - job-template:
338     name: 'xtesting-pi-{tag}-daily'
339     project-type: multijob
340     triggers:
341       - timed: '@daily'
342     parameters:
343       - xtesting-pi-node:
344           node: '{node}'
345       - xtesting-pi-build_tag:
346           build_tag: ''
347     # PyYAML and yamllint differ here
348     # see https://github.com/yaml/pyyaml/issues/234
349     # yamllint disable rule:indentation
350     properties:
351       - build-blocker:
352           blocking-jobs:
353           - ^xtesting-(pi-)*{tag}-(daily|docker|review)$
354     # yamllint enable rule:indentation
355     builders:
356       - multijob:
357           name: remove former images
358           projects:
359             - name: 'xtesting-pi-ollivier-xtesting-{tag}-rmi'
360               <<: *xtesting-pi-jobs
361       - multijob:
362           name: pull containers
363           projects:
364             - name: 'xtesting-pi-ollivier-xtesting-{tag}-pull'
365               <<: *xtesting-pi-jobs
366       - multijob:
367           name: ollivier/xtesting:{tag}
368           projects:
369             - name: 'xtesting-pi-ollivier-xtesting-{tag}-first-run'
370               <<: *xtesting-pi-jobs
371             - name: 'xtesting-pi-ollivier-xtesting-{tag}-second-run'
372               <<: *xtesting-pi-jobs
373             - name: 'xtesting-pi-ollivier-xtesting-{tag}-third-run'
374               <<: *xtesting-pi-jobs
375             - name: 'xtesting-pi-ollivier-xtesting-{tag}-fourth-run'
376               <<: *xtesting-pi-jobs
377             - name: 'xtesting-pi-ollivier-xtesting-{tag}-fifth-run'
378               <<: *xtesting-pi-jobs
379             - name: 'xtesting-pi-ollivier-xtesting-{tag}-sixth-run'
380               <<: *xtesting-pi-jobs
381             - name: 'xtesting-pi-ollivier-xtesting-{tag}-eighth-run'
382               <<: *xtesting-pi-jobs
383             - name: 'xtesting-pi-ollivier-xtesting-{tag}-nineth-run'
384               <<: *xtesting-pi-jobs
385       - multijob:
386           name: dump all campaign data
387           projects:
388             - name: 'xtesting-pi-{tag}-zip'
389               <<: *xtesting-pi-jobs
390     publishers:
391       - email-ext:
392           failure: false
393           first-failure: true
394           fixed: true
395           recipients: cedric.ollivier@orange.com
396
397 - project:
398     name: 'xtesting-pi-daily'
399     <<: *xtesting-pi-params
400     jobs:
401       - 'xtesting-pi-{tag}-daily'
402
403 - view:
404     name: xtesting-pi
405     view-type: list
406     columns:
407       - status
408       - weather
409       - job
410       - last-success
411       - last-failure
412       - last-duration
413     regex: ^xtesting-pi-[a-z-0-9.]+-daily$