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