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