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