Stop building functest-tempest
[releng.git] / jjb / functest / functest.yaml
1 ---
2 - functest-containers: &functest-containers
3     name: 'functest-containers'
4     repo: '{repo}'
5     port: '{port}'
6     container: '{container}'
7     tag: '{tag}'
8
9 - functest-params: &functest-params
10     name: 'functest-params'
11     repo: 'opnfv'
12     port:
13     tag:
14       - latest:
15           from:
16           build_args:
17           branch: master
18           slave: lf-pod4
19           DASHBOARD_URL: http://172.30.12.83
20           dependency: 3.14
21       - yoga:
22           from:
23           build_args:
24           branch: stable/yoga
25           slave: lf-pod4-3
26           DASHBOARD_URL: http://172.30.12.88
27           dependency: 3.14
28       - xena:
29           from:
30           build_args:
31           branch: stable/xena
32           slave: lf-pod4-2
33           DASHBOARD_URL: http://172.30.12.85
34           dependency: 3.14
35       - wallaby:
36           from:
37           build_args:
38           branch: stable/wallaby
39           slave: lf-virtual6
40           DASHBOARD_URL: http://172.30.13.91
41           dependency: 3.13
42
43 - functest-jobs: &functest-jobs
44     name: 'functest-jobs'
45     current-parameters: true
46
47 - parameter:
48     name: functest-slave
49     parameters:
50       - label:
51           name: slave
52           default: '{slave}'
53
54 - parameter:
55     name: functest-build_tag
56     parameters:
57       - random-string:
58           name: build_tag
59
60 - parameter:
61     name: functest-EXTERNAL_NETWORK
62     parameters:
63       - string:
64           name: EXTERNAL_NETWORK
65           default: public
66
67 - parameter:
68     name: functest-VOLUME_DEVICE_NAME
69     parameters:
70       - string:
71           name: VOLUME_DEVICE_NAME
72           default: sdb
73
74 - parameter:
75     name: functest-IMAGE_PROPERTIES
76     parameters:
77       - string:
78           name: IMAGE_PROPERTIES
79           default: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
80
81 - functest-run-containers: &functest-run-containers
82     name: 'functest-run-containers'
83     <<: *functest-containers
84     test: '{test}'
85     privileged: '{privileged}'
86     volumes: '{volumes}'
87     env: '{env}'
88     network: '{network}'
89     uid: '{uid}'
90     gid: '{gid}'
91     published_ports: '{published_ports}'
92     DASHBOARD_URL: '{DASHBOARD_URL}'
93
94 - builder:
95     name: functest-pull-containers
96     builders:
97       - shell: |
98           set +x
99           if [ "{repo}" = "_" ]; then
100             image={container}:{tag}
101           elif [ "{port}" = "None" ]; then
102             image={repo}/{container}:{tag}
103           else
104             image={repo}:{port}/{container}:{tag}
105           fi
106           sudo docker pull $image
107
108 - builder:
109     name: functest-run-containers
110     builders:
111       - shell: |
112           set +x
113           volumes=;
114           if [ "{volumes}" != "None" ]; then
115             for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \
116               do volumes="-v $i $volumes"; done
117           fi
118           env=;
119           if [ "{env}" != "None" ]; then
120             for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \
121               do env="-e $i $env"; done
122           fi
123           published_ports=;
124           if [ "{published_ports}" != "None" ]; then
125             for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \
126               do published_ports="-p $i $published_ports"; done
127           fi
128           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true
129           if [ "{repo}" = "_" ]; then
130             image={container}:{tag}
131           elif [ "{port}" = "None" ]; then
132             image={repo}/{container}:{tag}
133           else
134             image={repo}:{port}/{container}:{tag}
135           fi
136           sudo mkdir -p $WORKSPACE/results
137           sudo chown {uid}:{gid} $WORKSPACE/results
138           sudo docker run --rm \
139             --privileged={privileged} \
140             --network={network} \
141             $volumes \
142             $env \
143             $published_ports \
144             -e S3_ENDPOINT_URL=https://storage.googleapis.com \
145             -e S3_DST_URL=s3://artifacts.opnfv.org/functest/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
146             -e HTTP_DST_URL=http://artifacts.opnfv.org/functest/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
147             -v /home/opnfv/functest/.boto:/etc/boto.cfg \
148             -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \
149             -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \
150             -e NODE_NAME=$slave \
151             -e BUILD_TAG=$BUILD_TAG \
152             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
153             -e DASHBOARD_URL={DASHBOARD_URL} \
154             $image run_tests -t {test} -p -r
155
156 - builder:
157     name: functest-remove-images
158     builders:
159       - shell: |
160           set +x
161           if [ "{repo}" = "_" ]; then
162             image={container}:{tag}
163           elif [ "{port}" = "None" ]; then
164             image={repo}/{container}:{tag}
165           else
166             image={repo}:{port}/{container}:{tag}
167           fi
168           sudo docker rmi $image || true
169
170 - job-template:
171     name: 'functest-{repo}-{container}-{tag}-pull'
172     parameters:
173       - functest-slave:
174           slave: '{slave}'
175     builders:
176       - functest-pull-containers:
177           <<: *functest-containers
178
179 - project:
180     name: 'functest-opnfv-functest-healthcheck-pull'
181     <<: *functest-params
182     container: 'functest-healthcheck'
183     jobs:
184       - 'functest-{repo}-{container}-{tag}-pull'
185
186 - project:
187     name: 'functest-opnfv-functest-smoke-pull'
188     <<: *functest-params
189     container: 'functest-smoke'
190     jobs:
191       - 'functest-{repo}-{container}-{tag}-pull'
192
193 - project:
194     name: 'functest-opnfv-functest-smoke-cntt-pull'
195     <<: *functest-params
196     container: 'functest-smoke-cntt'
197     jobs:
198       - 'functest-{repo}-{container}-{tag}-pull'
199
200 - project:
201     name: 'functest-opnfv-functest-benchmarking-pull'
202     <<: *functest-params
203     container: 'functest-benchmarking'
204     jobs:
205       - 'functest-{repo}-{container}-{tag}-pull'
206
207 - project:
208     name: 'functest-opnfv-functest-benchmarking-cntt-pull'
209     <<: *functest-params
210     container: 'functest-benchmarking-cntt'
211     jobs:
212       - 'functest-{repo}-{container}-{tag}-pull'
213
214 - project:
215     name: 'functest-opnfv-functest-vnf-pull'
216     <<: *functest-params
217     container: 'functest-vnf'
218     jobs:
219       - 'functest-{repo}-{container}-{tag}-pull'
220
221 - job-template:
222     name: 'functest-{repo}-{container}-{tag}-rmi'
223     parameters:
224       - functest-slave:
225           slave: '{slave}'
226     builders:
227       - functest-remove-images:
228           <<: *functest-containers
229
230 - project:
231     name: 'functest-opnfv-functest-healthcheck-rmi'
232     <<: *functest-params
233     container: 'functest-healthcheck'
234     jobs:
235       - 'functest-{repo}-{container}-{tag}-rmi'
236
237 - project:
238     name: 'functest-opnfv-functest-smoke-rmi'
239     <<: *functest-params
240     container: 'functest-smoke'
241     jobs:
242       - 'functest-{repo}-{container}-{tag}-rmi'
243
244 - project:
245     name: 'functest-opnfv-functest-smoke-cntt-rmi'
246     <<: *functest-params
247     container: 'functest-smoke-cntt'
248     jobs:
249       - 'functest-{repo}-{container}-{tag}-rmi'
250
251 - project:
252     name: 'functest-opnfv-functest-benchmarking-rmi'
253     <<: *functest-params
254     container: 'functest-benchmarking'
255     jobs:
256       - 'functest-{repo}-{container}-{tag}-rmi'
257
258 - project:
259     name: 'functest-opnfv-functest-benchmarking-cntt-rmi'
260     <<: *functest-params
261     container: 'functest-benchmarking-cntt'
262     jobs:
263       - 'functest-{repo}-{container}-{tag}-rmi'
264
265 - project:
266     name: 'functest-opnfv-functest-vnf-rmi'
267     <<: *functest-params
268     container: 'functest-vnf'
269     jobs:
270       - 'functest-{repo}-{container}-{tag}-rmi'
271
272 - job-template:
273     name: 'functest-opnfv-functest-healthcheck-{tag}-{test}-run'
274     parameters:
275       - functest-slave:
276           slave: '{slave}'
277       - functest-build_tag:
278           build_tag: ''
279       - functest-EXTERNAL_NETWORK:
280           EXTERNAL_NETWORK: public
281       - functest-VOLUME_DEVICE_NAME:
282           VOLUME_DEVICE_NAME: sdb
283       - functest-IMAGE_PROPERTIES:
284           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
285     builders:
286       - functest-run-containers:
287           <<: *functest-run-containers
288
289 - project:
290     name: 'functest-opnfv-functest-healthcheck'
291     <<: *functest-params
292     volumes:
293       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
294       - /home/opnfv/functest/images:/home/opnfv/functest/images
295     env:
296       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
297       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
298       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
299     published_ports:
300     container: 'functest-healthcheck'
301     test:
302       - connection_check
303       - tenantnetwork1
304       - tenantnetwork2
305       - vmready1
306       - vmready2
307       - singlevm1
308       - singlevm2
309       - vping_ssh
310       - vping_userdata
311       - cinder_test
312       - odl
313       - tempest_smoke
314       - tempest_horizon
315     privileged: 'false'
316     network: bridge
317     uid: 1000
318     gid: 1000
319     jobs:
320       - 'functest-opnfv-functest-healthcheck-{tag}-{test}-run'
321
322 - job-template:
323     name: 'functest-opnfv-functest-smoke-{tag}-{test}-run'
324     parameters:
325       - functest-slave:
326           slave: '{slave}'
327       - functest-build_tag:
328           build_tag: ''
329       - functest-EXTERNAL_NETWORK:
330           EXTERNAL_NETWORK: public
331       - functest-VOLUME_DEVICE_NAME:
332           VOLUME_DEVICE_NAME: sdb
333       - functest-IMAGE_PROPERTIES:
334           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
335     builders:
336       - functest-run-containers:
337           <<: *functest-run-containers
338
339 - project:
340     name: 'functest-opnfv-functest-smoke'
341     <<: *functest-params
342     volumes:
343       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
344       - /home/opnfv/functest/images:/home/opnfv/functest/images
345     env:
346       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
347       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
348       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
349     published_ports:
350     container: 'functest-smoke'
351     test:
352       - tempest_neutron
353       - tempest_cinder
354       - tempest_keystone
355       - tempest_heat
356       - tempest_telemetry
357       - rally_sanity
358       - refstack_compute
359       - refstack_object
360       - refstack_platform
361       - tempest_full
362       - tempest_scenario
363       - tempest_slow
364       - patrole_admin
365       - patrole_member
366       - patrole_reader
367       - tempest_barbican
368       - tempest_octavia
369       - tempest_cyborg
370     privileged: 'false'
371     network: bridge
372     uid: 1000
373     gid: 1000
374     jobs:
375       - 'functest-opnfv-functest-smoke-{tag}-{test}-run'
376
377 - job-template:
378     name: 'functest-opnfv-functest-smoke-cntt-{tag}-{test}-run'
379     parameters:
380       - functest-slave:
381           slave: '{slave}'
382       - functest-build_tag:
383           build_tag: ''
384       - functest-EXTERNAL_NETWORK:
385           EXTERNAL_NETWORK: public
386       - functest-VOLUME_DEVICE_NAME:
387           VOLUME_DEVICE_NAME: sdb
388       - functest-IMAGE_PROPERTIES:
389           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
390     builders:
391       - functest-run-containers:
392           <<: *functest-run-containers
393
394 - project:
395     name: 'functest-opnfv-functest-smoke-cntt'
396     <<: *functest-params
397     volumes:
398       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
399       - /home/opnfv/functest/images:/home/opnfv/functest/images
400     env:
401       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
402       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
403       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
404     published_ports:
405     container: 'functest-smoke-cntt'
406     test:
407       - tempest_neutron_cntt
408       - tempest_cinder_cntt
409       - tempest_keystone_cntt
410       - tempest_heat_cntt
411       - rally_sanity_cntt
412       - tempest_full_cntt
413       - tempest_scenario_cntt
414       - tempest_slow_cntt
415     privileged: 'false'
416     network: bridge
417     uid: 1000
418     gid: 1000
419     jobs:
420       - 'functest-opnfv-functest-smoke-cntt-{tag}-{test}-run'
421
422 - job-template:
423     name: 'functest-opnfv-functest-benchmarking-{tag}-{test}-run'
424     parameters:
425       - functest-slave:
426           slave: '{slave}'
427       - functest-build_tag:
428           build_tag: ''
429       - functest-EXTERNAL_NETWORK:
430           EXTERNAL_NETWORK: public
431       - functest-VOLUME_DEVICE_NAME:
432           VOLUME_DEVICE_NAME: sdb
433       - functest-IMAGE_PROPERTIES:
434           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
435     builders:
436       - functest-run-containers:
437           <<: *functest-run-containers
438
439 - project:
440     name: 'functest-opnfv-functest-benchmarking'
441     <<: *functest-params
442     volumes:
443       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
444       - /home/opnfv/functest/images:/home/opnfv/functest/images
445     env:
446       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
447       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
448       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
449     published_ports:
450     container: 'functest-benchmarking'
451     test:
452       - rally_full
453       - rally_jobs
454       - vmtp
455       - shaker
456     privileged: 'false'
457     network: bridge
458     uid: 1000
459     gid: 1000
460     jobs:
461       - 'functest-opnfv-functest-benchmarking-{tag}-{test}-run'
462
463 - job-template:
464     name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-{test}-run'
465     parameters:
466       - functest-slave:
467           slave: '{slave}'
468       - functest-build_tag:
469           build_tag: ''
470       - functest-EXTERNAL_NETWORK:
471           EXTERNAL_NETWORK: public
472       - functest-VOLUME_DEVICE_NAME:
473           VOLUME_DEVICE_NAME: sdb
474       - functest-IMAGE_PROPERTIES:
475           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
476     builders:
477       - functest-run-containers:
478           <<: *functest-run-containers
479
480 - project:
481     name: 'functest-opnfv-functest-benchmarking-cntt'
482     <<: *functest-params
483     volumes:
484       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
485       - /home/opnfv/functest/images:/home/opnfv/functest/images
486     env:
487       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
488       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
489       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
490     published_ports:
491     container: 'functest-benchmarking-cntt'
492     test:
493       - rally_full_cntt
494       - rally_jobs_cntt
495     privileged: 'false'
496     network: bridge
497     uid: 1000
498     gid: 1000
499     jobs:
500       - 'functest-opnfv-functest-benchmarking-cntt-{tag}-{test}-run'
501
502 - job-template:
503     name: 'functest-opnfv-functest-vnf-{tag}-{test}-run'
504     parameters:
505       - functest-slave:
506           slave: '{slave}'
507       - functest-build_tag:
508           build_tag: ''
509       - functest-EXTERNAL_NETWORK:
510           EXTERNAL_NETWORK: public
511       - functest-VOLUME_DEVICE_NAME:
512           VOLUME_DEVICE_NAME: sdb
513       - functest-IMAGE_PROPERTIES:
514           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
515     builders:
516       - functest-run-containers:
517           <<: *functest-run-containers
518
519 - project:
520     name: 'functest-opnfv-functest-vnf'
521     <<: *functest-params
522     volumes:
523       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
524       - /home/opnfv/functest/images:/home/opnfv/functest/images
525     env:
526       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
527       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
528       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
529     published_ports:
530     container: 'functest-vnf'
531     test:
532       - cloudify
533       - cloudify_ims
534       - heat_ims
535       - vyos_vrouter
536       - juju_epc
537     privileged: 'false'
538     network: bridge
539     uid: 1000
540     gid: 1000
541     jobs:
542       - 'functest-opnfv-functest-vnf-{tag}-{test}-run'
543
544 - builder:
545     name: functest-zip
546     builders:
547       - shell: |
548           set +x
549           volumes=;
550           if [ "{volumes}" != "None" ]; then
551             for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \
552               do volumes="-v $i $volumes"; done
553           fi
554           env=;
555           if [ "{env}" != "None" ]; then
556             for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \
557               do env="-e $i $env"; done
558           fi
559           published_ports=;
560           if [ "{published_ports}" != "None" ]; then
561             for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \
562               do published_ports="-p $i $published_ports"; done
563           fi
564           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true
565           if [ "{repo}" = "_" ]; then
566             image={container}:{tag}
567           elif [ "{port}" = "None" ]; then
568             image={repo}/{container}:{tag}
569           else
570             image={repo}:{port}/{container}:{tag}
571           fi
572           sudo mkdir -p $WORKSPACE/results
573           sudo chown {uid}:{gid} $WORKSPACE/results
574           sudo docker run --rm \
575             $volumes \
576             $env \
577             $published_ports \
578             -e S3_ENDPOINT_URL=https://storage.googleapis.com \
579             -e S3_DST_URL=s3://artifacts.opnfv.org/functest \
580             -e HTTP_DST_URL=http://artifacts.opnfv.org/functest \
581             -v /home/opnfv/functest/.boto:/etc/boto.cfg \
582             -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \
583             -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \
584             -e BUILD_TAG=$BUILD_TAG \
585             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
586             $image zip_campaign
587
588 - job-template:
589     name: 'functest-{tag}-zip'
590     parameters:
591       - functest-slave:
592           slave: '{slave}'
593       - functest-build_tag:
594           build_tag: ''
595       - functest-EXTERNAL_NETWORK:
596           EXTERNAL_NETWORK: public
597       - functest-VOLUME_DEVICE_NAME:
598           VOLUME_DEVICE_NAME: sdb
599       - functest-IMAGE_PROPERTIES:
600           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
601     builders:
602       - functest-zip:
603           <<: *functest-containers
604           volumes: '{volumes}'
605           env: '{env}'
606           uid: '{uid}'
607           gid: '{gid}'
608           published_ports: '{published_ports}'
609
610 - project:
611     name: 'functest-{tag}-zip'
612     <<: *functest-params
613     volumes:
614       - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file
615       - /home/opnfv/functest/images:/home/opnfv/functest/images
616     env:
617       - EXTERNAL_NETWORK=$EXTERNAL_NETWORK
618       - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME
619       - IMAGE_PROPERTIES=$IMAGE_PROPERTIES
620     published_ports:
621     container: 'functest-healthcheck'
622     uid: 1000
623     gid: 1000
624     jobs:
625       - 'functest-{tag}-zip'
626
627 - job-template:
628     name: 'functest-{tag}-daily'
629     project-type: multijob
630     triggers:
631       - timed: '@weekly'
632     parameters:
633       - functest-slave:
634           slave: '{slave}'
635       - functest-build_tag:
636           build_tag: ''
637       - functest-EXTERNAL_NETWORK:
638           EXTERNAL_NETWORK: public
639       - functest-VOLUME_DEVICE_NAME:
640           VOLUME_DEVICE_NAME: sdb
641       - functest-IMAGE_PROPERTIES:
642           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
643     # PyYAML and yamllint differ here
644     # see https://github.com/yaml/pyyaml/issues/234
645     # yamllint disable rule:indentation
646     properties:
647       - build-blocker:
648           blocking-jobs:
649           - ^functest-(pi-)*{tag}-(daily|docker|review)$
650     # yamllint enable rule:indentation
651     builders:
652       - multijob:
653           name: remove former images
654           projects:
655             - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
656               <<: *functest-jobs
657             - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
658               <<: *functest-jobs
659             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rmi'
660               <<: *functest-jobs
661             - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
662               <<: *functest-jobs
663             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rmi'
664               <<: *functest-jobs
665             - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
666               <<: *functest-jobs
667       - multijob:
668           name: pull containers
669           projects:
670             - name: 'functest-opnfv-functest-healthcheck-{tag}-pull'
671               <<: *functest-jobs
672             - name: 'functest-opnfv-functest-smoke-{tag}-pull'
673               <<: *functest-jobs
674             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-pull'
675               <<: *functest-jobs
676             - name: 'functest-opnfv-functest-benchmarking-{tag}-pull'
677               <<: *functest-jobs
678             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-pull'
679               <<: *functest-jobs
680             - name: 'functest-opnfv-functest-vnf-{tag}-pull'
681               <<: *functest-jobs
682       - multijob:
683           name: opnfv/functest-healthcheck:{tag}
684           projects:
685             - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
686               <<: *functest-jobs
687             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
688               <<: *functest-jobs
689             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
690               <<: *functest-jobs
691             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
692               <<: *functest-jobs
693             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
694               <<: *functest-jobs
695             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
696               <<: *functest-jobs
697             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
698               <<: *functest-jobs
699             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
700               <<: *functest-jobs
701             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
702               <<: *functest-jobs
703             - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
704               <<: *functest-jobs
705             - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
706               <<: *functest-jobs
707             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_smoke-run'
708               <<: *functest-jobs
709             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_horizon-run'
710               <<: *functest-jobs
711       - multijob:
712           name: opnfv/functest-smoke:{tag}
713           projects:
714             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_neutron-run'
715               <<: *functest-jobs
716             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cinder-run'
717               <<: *functest-jobs
718             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_keystone-run'
719               <<: *functest-jobs
720             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_heat-run'
721               <<: *functest-jobs
722             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_telemetry-run'
723               <<: *functest-jobs
724             - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
725               <<: *functest-jobs
726             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run'
727               <<: *functest-jobs
728             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_object-run'
729               <<: *functest-jobs
730             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_platform-run'
731               <<: *functest-jobs
732             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_full-run'
733               <<: *functest-jobs
734             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_scenario-run'
735               <<: *functest-jobs
736             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_slow-run'
737               <<: *functest-jobs
738             - name: 'functest-opnfv-functest-smoke-{tag}-patrole_admin-run'
739               <<: *functest-jobs
740             - name: 'functest-opnfv-functest-smoke-{tag}-patrole_member-run'
741               <<: *functest-jobs
742             - name: 'functest-opnfv-functest-smoke-{tag}-patrole_reader-run'
743               <<: *functest-jobs
744             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_barbican-run'
745               <<: *functest-jobs
746             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_octavia-run'
747               <<: *functest-jobs
748             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cyborg-run'
749               <<: *functest-jobs
750       - multijob:
751           name: opnfv/functest-smoke-cntt:{tag}
752           projects:
753             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_neutron_cntt-run'
754               <<: *functest-jobs
755             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder_cntt-run'
756               <<: *functest-jobs
757             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone_cntt-run'
758               <<: *functest-jobs
759             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_heat_cntt-run'
760               <<: *functest-jobs
761             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity_cntt-run'
762               <<: *functest-jobs
763             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full_cntt-run'
764               <<: *functest-jobs
765             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario_cntt-run'
766               <<: *functest-jobs
767             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow_cntt-run'
768               <<: *functest-jobs
769       - multijob:
770           name: opnfv/functest-benchmarking:{tag}
771           projects:
772             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_full-run'
773               <<: *functest-jobs
774             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_jobs-run'
775               <<: *functest-jobs
776             - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
777               <<: *functest-jobs
778             - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
779               <<: *functest-jobs
780       - multijob:
781           name: opnfv/functest-benchmarking-cntt:{tag}
782           projects:
783             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_full_cntt-run'
784               <<: *functest-jobs
785             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_jobs_cntt-run'
786               <<: *functest-jobs
787       - multijob:
788           name: opnfv/functest-vnf:{tag}
789           projects:
790             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
791               <<: *functest-jobs
792             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
793               <<: *functest-jobs
794             - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
795               <<: *functest-jobs
796             - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
797               <<: *functest-jobs
798             - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
799               <<: *functest-jobs
800       - multijob:
801           name: dump all campaign data
802           projects:
803             - name: 'functest-{tag}-zip'
804               <<: *functest-jobs
805     publishers:
806       - email-ext:
807           failure: false
808           first-failure: true
809           fixed: true
810           recipients: cedric.ollivier@orange.com
811
812 - project:
813     name: 'functest-daily'
814     <<: *functest-params
815     jobs:
816       - 'functest-{tag}-daily'
817
818 - view:
819     name: functest
820     view-type: list
821     columns:
822       - status
823       - weather
824       - job
825       - last-success
826       - last-failure
827       - last-duration
828     regex: ^functest-[a-z0-9.]+-daily$
829
830 - functest-build-containers: &functest-build-containers
831     name: 'functest-build-containers'
832     <<: *functest-containers
833     ref_arg: '{ref_arg}'
834     path: '{path}'
835     build_args: '{build_args}'
836     from: '{from}'
837
838 - builder:
839     name: functest-build-containers
840     builders:
841       - shell: |
842           set +x
843           if [ "{repo}" = "_" ]; then
844             image={container}:{tag}
845           elif [ "{port}" = "None" ]; then
846             image={repo}/{container}:{tag}
847           else
848             image={repo}:{port}/{container}:{tag}
849           fi
850           build_args=""
851           if [ "{build_args}" != "None" ]; then
852             for i in $(echo {build_args} | tr -d '[]' |sed "s/, / /g" ); \
853               do build_args="--build-arg $i $build_args"; done
854           fi
855           if [ "{ref_arg}" != "None" ]; then
856             build_args="$build_args --build-arg {ref_arg}={ref}"
857           fi
858           cd {path}
859           if [ "{from}" != "None" ]; then
860               sed -i {from} Dockerfile
861           fi
862           sudo docker build $build_args \
863             --pull=false --no-cache --force-rm=true \
864             -t $image .
865
866 - scm:
867     name: functest-scm
868     scm:
869       - git:
870           url: 'https://gerrit.opnfv.org/gerrit/functest'
871           refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
872           branches:
873             - '{ref}'
874
875 - functest-dep: &functest-dep
876     name: 'functest-containers'
877     repo: '{repo}'
878     port: '{port}'
879     tag: '{tag}'
880     dependency: '{dependency}'
881
882 - builder:
883     name: functest-pull-dep-images
884     builders:
885       - shell: |
886           set +x
887           if [ "_" = "_" ]; then
888             image=alpine:{dependency}
889           elif [ "None" = "None" ]; then
890             image=_/alpine:{dependency}
891           else
892             image=_:/alpine:{dependency}
893           fi
894           sudo docker pull $image || true
895
896 - builder:
897     name: functest-remove-dep-images
898     builders:
899       - shell: |
900           set +x
901           if [ "_" = "_" ]; then
902             image=alpine:{dependency}
903           elif [ "" = "None" ]; then
904             image=_/alpine:{dependency}
905           else
906             image=_:/alpine:{dependency}
907           fi
908           sudo docker rmi $image || true
909
910 - job-template:
911     name: 'functest-{repo}-{tag}-dep-pull'
912     parameters:
913       - functest-slave:
914           slave: '{slave}'
915     builders:
916       - functest-pull-dep-images:
917           <<: *functest-dep
918
919 - project:
920     name: 'functest-{repo}-{tag}-dep-pull'
921     <<: *functest-params
922     jobs:
923       - 'functest-{repo}-{tag}-dep-pull'
924
925 - job-template:
926     name: 'functest-{repo}-{tag}-dep-rmi'
927     parameters:
928       - functest-slave:
929           slave: '{slave}'
930     builders:
931       - functest-remove-dep-images:
932           <<: *functest-dep
933
934 - project:
935     name: 'functest-{repo}-{tag}-dep-rmi'
936     <<: *functest-params
937     jobs:
938       - 'functest-{repo}-{tag}-dep-rmi'
939
940 - builder:
941     name: functest-tox
942     builders:
943       - shell: |
944           set +x
945           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
946           sudo DEBIAN_FRONTEND=noninteractive apt-get \
947             -o DPkg::Lock::Timeout=300 dist-upgrade -y
948           sudo DEBIAN_FRONTEND=noninteractive \
949           apt-get -o DPkg::Lock::Timeout=300 install software-properties-common gpg -y
950           sudo add-apt-repository -y ppa:deadsnakes/ppa
951           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
952           sudo DEBIAN_FRONTEND=noninteractive apt-get \
953             -o DPkg::Lock::Timeout=300 install \
954             libxml2-dev libxslt-dev libffi-dev libjpeg-dev \
955             python3.10 python3.10-dev python3.10-distutils \
956             python3.9 python3.9-dev python3.9-distutils \
957             python3.8 python3.8-dev python3.8-distutils \
958             python3.7 python3.7-dev python3.6 python3.6-dev \
959             python python-dev python3-pip enchant -y
960           sudo pip3 install tox tox-pip-version
961
962           tox
963
964 - job-template:
965     name: 'functest-{tag}-tox'
966     scm:
967       - functest-scm:
968           ref: $GERRIT_REFSPEC
969     triggers:
970       - functest-patchset-created:
971           branch: '{branch}'
972     parameters:
973       - functest-slave:
974           slave: '{slave}'
975     builders:
976       - functest-tox:
977
978 - project:
979     name: functest-tox
980     <<: *functest-params
981     jobs:
982       - 'functest-{tag}-tox'
983
984 - job-template:
985     name: 'functest-{repo}-{container}-{tag}-gate'
986     parameters:
987       - functest-slave:
988           slave: '{slave}'
989     scm:
990       - functest-scm:
991           ref: $GERRIT_REFSPEC
992     builders:
993       - functest-build-containers:
994           <<: *functest-build-containers
995           ref: $GERRIT_REFSPEC
996           build_args: '{build_args}'
997
998 - project:
999     name: functest-opnfv-functest-core-{tag}-gate
1000     <<: *functest-params
1001     container: functest-core
1002     ref_arg: BRANCH
1003     path: docker/core
1004     jobs:
1005       - 'functest-{repo}-{container}-{tag}-gate'
1006
1007 - project:
1008     name: functest-opnfv-functest-healthcheck-{tag}-gate
1009     <<: *functest-params
1010     container: functest-healthcheck
1011     ref_arg: BRANCH
1012     path: docker/healthcheck
1013     jobs:
1014       - 'functest-{repo}-{container}-{tag}-gate'
1015
1016 - project:
1017     name: functest-opnfv-functest-smoke-{tag}-gate
1018     <<: *functest-params
1019     container: functest-smoke
1020     ref_arg: BRANCH
1021     path: docker/smoke
1022     jobs:
1023       - 'functest-{repo}-{container}-{tag}-gate'
1024
1025 - project:
1026     name: functest-opnfv-functest-benchmarking-{tag}-gate
1027     <<: *functest-params
1028     container: functest-benchmarking
1029     ref_arg: BRANCH
1030     path: docker/benchmarking
1031     jobs:
1032       - 'functest-{repo}-{container}-{tag}-gate'
1033
1034 - project:
1035     name: functest-opnfv-functest-vnf-{tag}-gate
1036     <<: *functest-params
1037     container: functest-vnf
1038     ref_arg:
1039     path: docker/vnf
1040     jobs:
1041       - 'functest-{repo}-{container}-{tag}-gate'
1042
1043 - project:
1044     name: functest-opnfv-functest-smoke-cntt-{tag}-gate
1045     <<: *functest-params
1046     container: functest-smoke-cntt
1047     ref_arg: BRANCH
1048     path: docker/smoke-cntt
1049     jobs:
1050       - 'functest-{repo}-{container}-{tag}-gate'
1051
1052 - project:
1053     name: functest-opnfv-functest-benchmarking-cntt-{tag}-gate
1054     <<: *functest-params
1055     container: functest-benchmarking-cntt
1056     ref_arg: BRANCH
1057     path: docker/benchmarking-cntt
1058     jobs:
1059       - 'functest-{repo}-{container}-{tag}-gate'
1060
1061 - trigger:
1062     name: functest-patchset-created
1063     triggers:
1064       - gerrit:
1065           trigger-on:
1066             - patchset-created-event
1067             - comment-added-contains-event:
1068                 comment-contains-value: 'recheck'
1069             - comment-added-contains-event:
1070                 comment-contains-value: 'reverify'
1071           projects:
1072             - project-compare-type: 'ANT'
1073               project-pattern: 'functest'
1074               branches:
1075                 - branch-compare-type: 'ANT'
1076                   branch-pattern: '**/{branch}'
1077
1078 - job-template:
1079     name: 'functest-{tag}-review'
1080     project-type: multijob
1081     triggers:
1082       - functest-patchset-created:
1083           branch: '{branch}'
1084     parameters:
1085       - functest-slave:
1086           slave: '{slave}'
1087       - functest-build_tag:
1088           build_tag: ''
1089       - functest-EXTERNAL_NETWORK:
1090           EXTERNAL_NETWORK: public
1091       - functest-VOLUME_DEVICE_NAME:
1092           VOLUME_DEVICE_NAME: sdb
1093       - functest-IMAGE_PROPERTIES:
1094           IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi
1095     # PyYAML and yamllint differ here
1096     # see https://github.com/yaml/pyyaml/issues/234
1097     # yamllint disable rule:indentation
1098     properties:
1099       - build-blocker:
1100           blocking-jobs:
1101           - ^functest-(pi-)*{tag}-(daily|docker|review)$
1102     # yamllint enable rule:indentation
1103     builders:
1104       - multijob:
1105           name: remove former images
1106           projects:
1107             - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
1108               <<: *functest-jobs
1109             - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
1110               <<: *functest-jobs
1111             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rmi'
1112               <<: *functest-jobs
1113             - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
1114               <<: *functest-jobs
1115             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rmi'
1116               <<: *functest-jobs
1117             - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
1118               <<: *functest-jobs
1119       - multijob:
1120           name: remove dependency
1121           projects:
1122             - name: 'functest-{repo}-{tag}-dep-rmi'
1123               <<: *functest-jobs
1124       - multijob:
1125           name: pull dependency
1126           projects:
1127             - name: 'functest-{repo}-{tag}-dep-pull'
1128               <<: *functest-jobs
1129       - multijob:
1130           name: build opnfv/functest-core
1131           projects:
1132             - name: 'functest-opnfv-functest-core-{tag}-gate'
1133               <<: *functest-jobs
1134       - multijob:
1135           name: build containers
1136           projects:
1137             - name: 'functest-opnfv-functest-healthcheck-{tag}-gate'
1138               <<: *functest-jobs
1139             - name: 'functest-opnfv-functest-smoke-{tag}-gate'
1140               <<: *functest-jobs
1141             - name: 'functest-opnfv-functest-benchmarking-{tag}-gate'
1142               <<: *functest-jobs
1143             - name: 'functest-opnfv-functest-vnf-{tag}-gate'
1144               <<: *functest-jobs
1145       - multijob:
1146           name: build cntt containers
1147           projects:
1148             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-gate'
1149               <<: *functest-jobs
1150             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-gate'
1151               <<: *functest-jobs
1152       - multijob:
1153           name: opnfv/functest-healthcheck:{tag}
1154           projects:
1155             - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
1156               <<: *functest-jobs
1157             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
1158               <<: *functest-jobs
1159             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
1160               <<: *functest-jobs
1161             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
1162               <<: *functest-jobs
1163             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
1164               <<: *functest-jobs
1165             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
1166               <<: *functest-jobs
1167             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
1168               <<: *functest-jobs
1169             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
1170               <<: *functest-jobs
1171             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
1172               <<: *functest-jobs
1173             - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
1174               <<: *functest-jobs
1175             - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
1176               <<: *functest-jobs
1177             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_smoke-run'
1178               <<: *functest-jobs
1179             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_horizon-run'
1180               <<: *functest-jobs
1181       - multijob:
1182           name: opnfv/functest-smoke:{tag}
1183           projects:
1184             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_neutron-run'
1185               <<: *functest-jobs
1186             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cinder-run'
1187               <<: *functest-jobs
1188             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_keystone-run'
1189               <<: *functest-jobs
1190             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_heat-run'
1191               <<: *functest-jobs
1192             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_telemetry-run'
1193               <<: *functest-jobs
1194             - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
1195               <<: *functest-jobs
1196             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run'
1197               <<: *functest-jobs
1198             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_object-run'
1199               <<: *functest-jobs
1200             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_platform-run'
1201               <<: *functest-jobs
1202             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_full-run'
1203               <<: *functest-jobs
1204             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_scenario-run'
1205               <<: *functest-jobs
1206             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_slow-run'
1207               <<: *functest-jobs
1208             - name: 'functest-opnfv-functest-smoke-{tag}-patrole_admin-run'
1209               <<: *functest-jobs
1210             - name: 'functest-opnfv-functest-smoke-{tag}-patrole_member-run'
1211               <<: *functest-jobs
1212             - name: 'functest-opnfv-functest-smoke-{tag}-patrole_reader-run'
1213               <<: *functest-jobs
1214             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_barbican-run'
1215               <<: *functest-jobs
1216             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_octavia-run'
1217               <<: *functest-jobs
1218             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cyborg-run'
1219               <<: *functest-jobs
1220       - multijob:
1221           name: opnfv/functest-smoke-cntt:{tag}
1222           projects:
1223             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_neutron_cntt-run'
1224               <<: *functest-jobs
1225             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder_cntt-run'
1226               <<: *functest-jobs
1227             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone_cntt-run'
1228               <<: *functest-jobs
1229             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_heat_cntt-run'
1230               <<: *functest-jobs
1231             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity_cntt-run'
1232               <<: *functest-jobs
1233             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full_cntt-run'
1234               <<: *functest-jobs
1235             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario_cntt-run'
1236               <<: *functest-jobs
1237             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow_cntt-run'
1238               <<: *functest-jobs
1239       - multijob:
1240           name: opnfv/functest-benchmarking:{tag}
1241           projects:
1242             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_full-run'
1243               <<: *functest-jobs
1244             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_jobs-run'
1245               <<: *functest-jobs
1246             - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
1247               <<: *functest-jobs
1248             - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
1249               <<: *functest-jobs
1250       - multijob:
1251           name: opnfv/functest-benchmarking-cntt:{tag}
1252           projects:
1253             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_full_cntt-run'
1254               <<: *functest-jobs
1255             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_jobs_cntt-run'
1256               <<: *functest-jobs
1257       - multijob:
1258           name: opnfv/functest-vnf:{tag}
1259           projects:
1260             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
1261               <<: *functest-jobs
1262             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
1263               <<: *functest-jobs
1264             - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
1265               <<: *functest-jobs
1266             - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
1267               <<: *functest-jobs
1268             - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
1269               <<: *functest-jobs
1270     publishers:
1271       - email-ext:
1272           failure: false
1273           first-failure: true
1274           fixed: true
1275           recipients: cedric.ollivier@orange.com
1276
1277 - project:
1278     name: 'functest-review'
1279     <<: *functest-params
1280     jobs:
1281       - 'functest-{tag}-review'
1282
1283 - view:
1284     name: functest-review
1285     view-type: list
1286     columns:
1287       - status
1288       - weather
1289       - job
1290       - last-success
1291       - last-failure
1292       - last-duration
1293     regex: ^functest-[a-z0-9.]+-review$
1294
1295 - view:
1296     name: functest-tox
1297     view-type: list
1298     columns:
1299       - status
1300       - weather
1301       - job
1302       - last-success
1303       - last-failure
1304       - last-duration
1305     regex: ^functest-[a-z0-9.]+-tox$
1306
1307 - builder:
1308     name: functest-push-containers
1309     builders:
1310       - shell: |
1311           set +x
1312           if [ "{repo}" = "_" ]; then
1313             image={container}:{tag}
1314           elif [ "{port}" = "None" ]; then
1315             image={repo}/{container}:{tag}
1316           else
1317             image={repo}:{port}/{container}:{tag}
1318           fi
1319           sudo docker push $image
1320
1321 - trigger:
1322     name: functest-commit
1323     triggers:
1324       - pollscm:
1325           cron: "*/30 * * * *"
1326
1327 - job-template:
1328     name: 'functest-{repo}-{container}-{tag}-build'
1329     parameters:
1330       - functest-slave:
1331           slave: '{slave}'
1332     scm:
1333       - functest-scm:
1334           ref: '{branch}'
1335     builders:
1336       - functest-build-containers:
1337           <<: *functest-build-containers
1338           ref: '{branch}'
1339           build_args: '{build_args}'
1340       - functest-push-containers:
1341           <<: *functest-build-containers
1342           ref: '{branch}'
1343
1344 - project:
1345     name: functest-opnfv-functest-core-{tag}-build
1346     <<: *functest-params
1347     container: functest-core
1348     ref_arg: BRANCH
1349     path: docker/core
1350     jobs:
1351       - 'functest-{repo}-{container}-{tag}-build'
1352
1353 - project:
1354     name: functest-opnfv-functest-healthcheck-{tag}-build
1355     <<: *functest-params
1356     container: functest-healthcheck
1357     ref_arg: BRANCH
1358     path: docker/healthcheck
1359     jobs:
1360       - 'functest-{repo}-{container}-{tag}-build'
1361
1362 - project:
1363     name: functest-opnfv-functest-smoke-{tag}-build
1364     <<: *functest-params
1365     container: functest-smoke
1366     ref_arg: BRANCH
1367     path: docker/smoke
1368     jobs:
1369       - 'functest-{repo}-{container}-{tag}-build'
1370
1371 - project:
1372     name: functest-opnfv-functest-benchmarking-{tag}-build
1373     <<: *functest-params
1374     container: functest-benchmarking
1375     ref_arg: BRANCH
1376     path: docker/benchmarking
1377     jobs:
1378       - 'functest-{repo}-{container}-{tag}-build'
1379
1380 - project:
1381     name: functest-opnfv-functest-vnf-{tag}-build
1382     <<: *functest-params
1383     container: functest-vnf
1384     ref_arg:
1385     path: docker/vnf
1386     jobs:
1387       - 'functest-{repo}-{container}-{tag}-build'
1388
1389 - project:
1390     name: functest-opnfv-functest-smoke-cntt-{tag}-build
1391     <<: *functest-params
1392     container: functest-smoke-cntt
1393     ref_arg: BRANCH
1394     path: docker/smoke-cntt
1395     jobs:
1396       - 'functest-{repo}-{container}-{tag}-build'
1397
1398 - project:
1399     name: functest-opnfv-functest-benchmarking-cntt-{tag}-build
1400     <<: *functest-params
1401     container: functest-benchmarking-cntt
1402     ref_arg: BRANCH
1403     path: docker/benchmarking-cntt
1404     jobs:
1405       - 'functest-{repo}-{container}-{tag}-build'
1406
1407 - job-template:
1408     name: 'functest-{tag}-docker'
1409     project-type: multijob
1410     triggers:
1411       - functest-commit
1412     scm:
1413       - functest-scm:
1414           ref: '{branch}'
1415     parameters:
1416       - functest-slave:
1417           slave: '{slave}'
1418     # PyYAML and yamllint differ here
1419     # see https://github.com/yaml/pyyaml/issues/234
1420     # yamllint disable rule:indentation
1421     properties:
1422       - build-blocker:
1423           blocking-jobs:
1424           - ^functest-(pi-)*{tag}-(daily|docker|review)$
1425     # yamllint enable rule:indentation
1426     builders:
1427       - multijob:
1428           name: remove dependency
1429           projects:
1430             - name: 'functest-{repo}-{tag}-dep-rmi'
1431               <<: *functest-jobs
1432       - multijob:
1433           name: pull dependency
1434           projects:
1435             - name: 'functest-{repo}-{tag}-dep-pull'
1436               <<: *functest-jobs
1437       - multijob:
1438           name: build opnfv/functest-core
1439           projects:
1440             - name: 'functest-opnfv-functest-core-{tag}-build'
1441               <<: *functest-jobs
1442       - multijob:
1443           name: build containers
1444           projects:
1445             - name: 'functest-opnfv-functest-healthcheck-{tag}-build'
1446               <<: *functest-jobs
1447             - name: 'functest-opnfv-functest-smoke-{tag}-build'
1448               <<: *functest-jobs
1449             - name: 'functest-opnfv-functest-benchmarking-{tag}-build'
1450               <<: *functest-jobs
1451             - name: 'functest-opnfv-functest-vnf-{tag}-build'
1452               <<: *functest-jobs
1453       - multijob:
1454           name: build cntt containers
1455           projects:
1456             - name: 'functest-opnfv-functest-smoke-cntt-{tag}-build'
1457               <<: *functest-jobs
1458             - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-build'
1459               <<: *functest-jobs
1460     publishers:
1461       - email-ext:
1462           failure: false
1463           first-failure: true
1464           fixed: true
1465           recipients: cedric.ollivier@orange.com
1466
1467 - builder:
1468     name: functest-trivy
1469     builders:
1470       - shell: |
1471           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
1472           sudo DEBIAN_FRONTEND=noninteractive apt-get \
1473             -o DPkg::Lock::Timeout=300 install curl -y
1474
1475           curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b .
1476           if [ "{repo}" = "_" ]; then
1477             image={container}:{tag}
1478           elif [ "{port}" = "None" ]; then
1479             image={repo}/{container}:{tag}
1480           else
1481             image={repo}:{port}/{container}:{tag}
1482           fi
1483           ./trivy image --exit-code 1 $image
1484
1485 - job-template:
1486     name: 'functest-{repo}-{container}-{tag}-trivy'
1487     triggers:
1488       - timed: '@weekly'
1489     parameters:
1490       - functest-slave:
1491           slave: '{slave}'
1492     builders:
1493       - functest-trivy:
1494           <<: *functest-containers
1495     publishers:
1496       - email-ext:
1497           failure: false
1498           first-failure: true
1499           fixed: true
1500           recipients: cedric.ollivier@orange.com
1501
1502 - project:
1503     name: 'functest-opnfv-functest-core-trivy'
1504     <<: *functest-params
1505     container: 'functest-core'
1506     jobs:
1507       - 'functest-{repo}-{container}-{tag}-trivy'
1508
1509 - project:
1510     name: 'functest-opnfv-functest-healthcheck-trivy'
1511     <<: *functest-params
1512     container: 'functest-healthcheck'
1513     jobs:
1514       - 'functest-{repo}-{container}-{tag}-trivy'
1515
1516 - project:
1517     name: 'functest-opnfv-functest-smoke-trivy'
1518     <<: *functest-params
1519     container: 'functest-smoke'
1520     jobs:
1521       - 'functest-{repo}-{container}-{tag}-trivy'
1522
1523 - project:
1524     name: 'functest-opnfv-functest-benchmarking-trivy'
1525     <<: *functest-params
1526     container: 'functest-benchmarking'
1527     jobs:
1528       - 'functest-{repo}-{container}-{tag}-trivy'
1529
1530 - project:
1531     name: 'functest-opnfv-functest-vnf-trivy'
1532     <<: *functest-params
1533     container: 'functest-vnf'
1534     jobs:
1535       - 'functest-{repo}-{container}-{tag}-trivy'
1536
1537 - project:
1538     name: 'functest-opnfv-functest-smoke-cntt-trivy'
1539     <<: *functest-params
1540     container: 'functest-smoke-cntt'
1541     jobs:
1542       - 'functest-{repo}-{container}-{tag}-trivy'
1543
1544 - project:
1545     name: 'functest-opnfv-functest-benchmarking-cntt-trivy'
1546     <<: *functest-params
1547     container: 'functest-benchmarking-cntt'
1548     jobs:
1549       - 'functest-{repo}-{container}-{tag}-trivy'
1550
1551 - builder:
1552     name: functest-grype
1553     builders:
1554       - shell: |
1555           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
1556           sudo DEBIAN_FRONTEND=noninteractive apt-get \
1557             -o DPkg::Lock::Timeout=300 install curl -y
1558
1559           curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sudo sh -s -- -b .
1560           if [ "{repo}" = "_" ]; then
1561             image={container}:{tag}
1562           elif [ "{port}" = "None" ]; then
1563             image={repo}/{container}:{tag}
1564           else
1565             image={repo}:{port}/{container}:{tag}
1566           fi
1567           ./grype -q $image
1568
1569 - job-template:
1570     name: 'functest-{repo}-{container}-{tag}-grype'
1571     triggers:
1572       - timed: '@weekly'
1573     parameters:
1574       - functest-slave:
1575           slave: '{slave}'
1576     builders:
1577       - functest-grype:
1578           <<: *functest-containers
1579     publishers:
1580       - email-ext:
1581           failure: false
1582           first-failure: true
1583           fixed: true
1584           recipients: cedric.ollivier@orange.com
1585
1586 - project:
1587     name: 'functest-opnfv-functest-core-grype'
1588     <<: *functest-params
1589     container: 'functest-core'
1590     jobs:
1591       - 'functest-{repo}-{container}-{tag}-grype'
1592
1593 - project:
1594     name: 'functest-opnfv-functest-healthcheck-grype'
1595     <<: *functest-params
1596     container: 'functest-healthcheck'
1597     jobs:
1598       - 'functest-{repo}-{container}-{tag}-grype'
1599
1600 - project:
1601     name: 'functest-opnfv-functest-smoke-grype'
1602     <<: *functest-params
1603     container: 'functest-smoke'
1604     jobs:
1605       - 'functest-{repo}-{container}-{tag}-grype'
1606
1607 - project:
1608     name: 'functest-opnfv-functest-benchmarking-grype'
1609     <<: *functest-params
1610     container: 'functest-benchmarking'
1611     jobs:
1612       - 'functest-{repo}-{container}-{tag}-grype'
1613
1614 - project:
1615     name: 'functest-opnfv-functest-vnf-grype'
1616     <<: *functest-params
1617     container: 'functest-vnf'
1618     jobs:
1619       - 'functest-{repo}-{container}-{tag}-grype'
1620
1621 - project:
1622     name: 'functest-opnfv-functest-smoke-cntt-grype'
1623     <<: *functest-params
1624     container: 'functest-smoke-cntt'
1625     jobs:
1626       - 'functest-{repo}-{container}-{tag}-grype'
1627
1628 - project:
1629     name: 'functest-opnfv-functest-benchmarking-cntt-grype'
1630     <<: *functest-params
1631     container: 'functest-benchmarking-cntt'
1632     jobs:
1633       - 'functest-{repo}-{container}-{tag}-grype'
1634
1635 - project:
1636     name: 'functest'
1637     <<: *functest-params
1638     jobs:
1639       - 'functest-{tag}-docker'
1640
1641 - view:
1642     name: functest-docker
1643     view-type: list
1644     columns:
1645       - status
1646       - weather
1647       - job
1648       - last-success
1649       - last-failure
1650       - last-duration
1651     regex: ^functest-[a-z0-9.]+-docker$
1652
1653 - view:
1654     name: functest-trivy
1655     view-type: list
1656     columns:
1657       - status
1658       - weather
1659       - job
1660       - last-success
1661       - last-failure
1662       - last-duration
1663     regex: (?!functest-kubernetes)(?!functest-pi)^functest-[a-z-0-9.]+-trivy$
1664
1665 - view:
1666     name: functest-grype
1667     view-type: list
1668     columns:
1669       - status
1670       - weather
1671       - job
1672       - last-success
1673       - last-failure
1674       - last-duration
1675     regex: (?!functest-kubernetes)(?!functest-pi)^functest-[a-z-0-9.]+-grype$