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