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