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