4a60c648420bfef0db0afd0ffa29bfe49684083d
[releng.git] / jjb / functest / functest.yaml
1 ---
2 - functest-jobs: &functest-jobs
3     name: 'functest-jobs'
4     current-parameters: true
5
6 - functest-params: &functest-params
7     name: 'functest-params'
8     repo: 'opnfv'
9     port:
10     tag:
11       - latest:
12           branch: master
13           slave: lf-virtual9
14       - iruya:
15           branch: stable/iruya
16           slave: lf-virtual4
17       - hunter:
18           branch: stable/hunter
19           slave: lf-virtual6
20
21 - parameter:
22     name: functest-slave
23     parameters:
24       - label:
25           name: slave
26           default: '{slave}'
27
28 - parameter:
29     name: functest-branch
30     parameters:
31       - string:
32           name: branch
33           default: '{branch}'
34
35 - functest-containers: &functest-containers
36     name: 'functest-containers'
37     repo: '{repo}'
38     port: '{port}'
39     container: '{container}'
40     tag: '{tag}'
41
42 - functest-run-containers: &functest-run-containers
43     name: 'functest-build-containers'
44     <<: *functest-containers
45     test: '{test}'
46
47 - functest-build-containers: &functest-build-containers
48     name: 'functest-build-containers'
49     <<: *functest-containers
50     ref_arg: '{ref_arg}'
51     path: '{path}'
52
53 - builder:
54     name: functest-pull-containers
55     builders:
56       - shell: |
57           set +x
58           if [ "{repo}" = "_" ]; then
59             image={container}:{tag}
60           elif [ "{port}" = "None" ]; then
61             image={repo}/{container}:{tag}
62           else
63             image={repo}:{port}/{container}:{tag}
64           fi
65           sudo docker pull $image
66
67 - builder:
68     name: functest-build-containers
69     builders:
70       - shell: |
71           set +x
72           if [ "{repo}" = "_" ]; then
73             image={container}:{tag}
74           elif [ "{port}" = "None" ]; then
75             image={repo}/{container}:{tag}
76           else
77             image={repo}:{port}/{container}:{tag}
78           fi
79           if [ "{ref_arg}" = "None" ]; then
80             build_arg=""
81           else
82             build_arg="--build-arg {ref_arg}={ref}"
83           fi
84           cd {path}
85           sudo docker build $build_arg \
86             --pull=false --no-cache --force-rm=true \
87             -t $image .
88
89 - builder:
90     name: functest-run-containers
91     builders:
92       - shell: |
93           set +ex
94           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true
95           if [ "{repo}" = "_" ]; then
96             image={container}:{tag}
97           elif [ "{port}" = "None" ]; then
98             image={repo}/{container}:{tag}
99           else
100             image={repo}:{port}/{container}:{tag}
101           fi
102           sudo docker run --rm \
103             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
104             -e DEBUG=True \
105             -e EXTERNAL_NETWORK=public \
106             -v /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file \
107             -v /home/opnfv/functest/images:/home/opnfv/functest/images \
108             -v /home/opnfv/functest/blacklist.yaml:/usr/lib/python2.7/\
109           site-packages/functest/opnfv_tests/openstack/rally/blacklist.yaml \
110             $image run_tests -t {test}
111           res=$?
112           gsutil -m cp -r $WORKSPACE/ \
113             gs://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID > /dev/null 2>&1
114           find $WORKSPACE -type f \
115             -printf \
116             "http://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID/%P\n"
117           exit $res
118
119 - builder:
120     name: functest-remove-images
121     builders:
122       - shell: |
123           set +x
124           if [ "{repo}" = "_" ]; then
125             image={container}:{tag}
126           elif [ "{port}" = "None" ]; then
127             image={repo}/{container}:{tag}
128           else
129             image={repo}:{port}/{container}:{tag}
130           fi
131           sudo docker rmi $image || true
132
133 - scm:
134     name: functest-scm
135     scm:
136       - git:
137           url: https://gerrit.opnfv.org/gerrit/functest
138           refspec: '+refs/changes/*:refs/changes/*'
139           branches:
140             - '{ref}'
141
142 - job-template:
143     name: 'functest-{repo}-{container}-{tag}-pull'
144     parameters:
145       - functest-slave:
146           slave: '{slave}'
147     builders:
148       - functest-pull-containers:
149           <<: *functest-containers
150
151 - project:
152     name: 'functest-opnfv-functest-healthcheck-pull'
153     <<: *functest-params
154     container: 'functest-healthcheck'
155     jobs:
156       - 'functest-{repo}-{container}-{tag}-pull'
157
158 - project:
159     name: 'functest-opnfv-functest-smoke-pull'
160     <<: *functest-params
161     container: 'functest-smoke'
162     jobs:
163       - 'functest-{repo}-{container}-{tag}-pull'
164
165 - project:
166     name: 'functest-opnfv-functest-benchmarking-pull'
167     <<: *functest-params
168     container: 'functest-benchmarking'
169     jobs:
170       - 'functest-{repo}-{container}-{tag}-pull'
171
172 - project:
173     name: 'functest-opnfv-functest-vnf-pull'
174     <<: *functest-params
175     container: 'functest-vnf'
176     jobs:
177       - 'functest-{repo}-{container}-{tag}-pull'
178
179 - project:
180     name: 'functest-opnfv-functest-features-pull'
181     <<: *functest-params
182     container: 'functest-features'
183     jobs:
184       - 'functest-{repo}-{container}-{tag}-pull'
185
186 - job-template:
187     name: 'functest-{repo}-{container}-{tag}-rmi'
188     parameters:
189       - functest-slave:
190           slave: '{slave}'
191     builders:
192       - functest-remove-images:
193           <<: *functest-containers
194
195 - project:
196     name: 'functest-opnfv-functest-healthcheck-rmi'
197     <<: *functest-params
198     container: 'functest-healthcheck'
199     jobs:
200       - 'functest-{repo}-{container}-{tag}-rmi'
201
202 - project:
203     name: 'functest-opnfv-functest-smoke-rmi'
204     <<: *functest-params
205     container: 'functest-smoke'
206     jobs:
207       - 'functest-{repo}-{container}-{tag}-rmi'
208
209 - project:
210     name: 'functest-opnfv-functest-benchmarking-rmi'
211     <<: *functest-params
212     container: 'functest-benchmarking'
213     jobs:
214       - 'functest-{repo}-{container}-{tag}-rmi'
215
216 - project:
217     name: 'functest-opnfv-functest-vnf-rmi'
218     <<: *functest-params
219     container: 'functest-vnf'
220     jobs:
221       - 'functest-{repo}-{container}-{tag}-rmi'
222
223 - project:
224     name: 'functest-opnfv-functest-features-rmi'
225     <<: *functest-params
226     container: 'functest-features'
227     jobs:
228       - 'functest-{repo}-{container}-{tag}-rmi'
229
230 - job-template:
231     name: 'functest-{repo}-{container}-{tag}-{test}-run'
232     parameters:
233       - functest-slave:
234           slave: '{slave}'
235     builders:
236       - functest-run-containers:
237           <<: *functest-run-containers
238
239 - project:
240     name: 'functest-opnfv-functest-healthcheck'
241     <<: *functest-params
242     container: 'functest-healthcheck'
243     test:
244       - connection_check
245       - tenantnetwork1
246       - tenantnetwork2
247       - vmready1
248       - vmready2
249       - singlevm1
250       - singlevm2
251       - vping_ssh
252       - vping_userdata
253       - cinder_test
254       - odl
255       - tempest_smoke
256     jobs:
257       - 'functest-{repo}-{container}-{tag}-{test}-run'
258
259 - project:
260     name: 'functest-opnfv-functest-smoke'
261     <<: *functest-params
262     container: 'functest-smoke'
263     test:
264       - neutron-tempest-plugin-api
265       - rally_sanity
266       - refstack_defcore
267       - refstack_compute
268       - refstack_object
269       - refstack_platform
270       - tempest_full
271       - tempest_scenario
272       - patrole
273       - neutron_trunk
274       - networking-bgpvpn
275       - networking-sfc
276       - barbican
277     exclude:
278       - tag: latest
279         test: refstack_defcore
280       - tag: iruya
281         test: refstack_defcore
282       - tag: hunter
283         test: refstack_compute
284       - tag: hunter
285         test: refstack_object
286       - tag: hunter
287         test: refstack_platform
288     jobs:
289       - 'functest-{repo}-{container}-{tag}-{test}-run'
290
291 - project:
292     name: 'functest-opnfv-functest-benchmarking'
293     <<: *functest-params
294     container: 'functest-benchmarking'
295     test:
296       - rally_full
297       - rally_jobs
298       - vmtp
299       - shaker
300     jobs:
301       - 'functest-{repo}-{container}-{tag}-{test}-run'
302
303 - project:
304     name: 'functest-opnfv-functest-vnf'
305     <<: *functest-params
306     container: 'functest-vnf'
307     test:
308       - cloudify
309       - cloudify_ims
310       - heat_ims
311       - vyos_vrouter
312       - juju_epc
313     jobs:
314       - 'functest-{repo}-{container}-{tag}-{test}-run'
315
316 - project:
317     name: 'functest-opnfv-functest-features'
318     <<: *functest-params
319     container: 'functest-features'
320     test:
321       - doctor-notification
322       - functest-odl-sfc
323       - barometercollectd
324       - vgpu
325       - stor4nfv_os
326     jobs:
327       - 'functest-{repo}-{container}-{tag}-{test}-run'
328
329 - job-template:
330     name: 'functest-{tag}-daily'
331     project-type: multijob
332     triggers:
333       - timed: '@daily'
334     parameters:
335       - functest-slave:
336           slave: '{slave}'
337     properties:
338       - build-blocker:
339           use-build-blocker: true
340           blocking-level: 'NODE'
341           blocking-jobs:
342             - '^functest-{tag}-(daily|check|gate)$'
343     builders:
344       - multijob:
345           name: remove former images
346           projects:
347             - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
348               <<: *functest-jobs
349             - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
350               <<: *functest-jobs
351             - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
352               <<: *functest-jobs
353             - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
354               <<: *functest-jobs
355             - name: 'functest-opnfv-functest-features-{tag}-rmi'
356               <<: *functest-jobs
357       - multijob:
358           name: pull containers
359           projects:
360             - name: 'functest-opnfv-functest-healthcheck-{tag}-pull'
361               <<: *functest-jobs
362             - name: 'functest-opnfv-functest-smoke-{tag}-pull'
363               <<: *functest-jobs
364             - name: 'functest-opnfv-functest-benchmarking-{tag}-pull'
365               <<: *functest-jobs
366             - name: 'functest-opnfv-functest-vnf-{tag}-pull'
367               <<: *functest-jobs
368             - name: 'functest-opnfv-functest-features-{tag}-pull'
369               <<: *functest-jobs
370       - multijob:
371           name: opnfv/functest-healthcheck:{tag}
372           execution-type: PARALLEL
373           condition: ALWAYS
374           projects:
375             - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
376               <<: *functest-jobs
377             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
378               <<: *functest-jobs
379             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
380               <<: *functest-jobs
381             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
382               <<: *functest-jobs
383             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
384               <<: *functest-jobs
385             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
386               <<: *functest-jobs
387             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
388               <<: *functest-jobs
389             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
390               <<: *functest-jobs
391             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
392               <<: *functest-jobs
393             - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
394               <<: *functest-jobs
395             - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
396               <<: *functest-jobs
397             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_smoke-run'
398               <<: *functest-jobs
399       - multijob:
400           name: opnfv/functest-smoke:{tag}
401           execution-type: PARALLEL
402           condition: SUCCESSFUL
403           projects:
404             - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
405               <<: *functest-jobs
406             - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
407               <<: *functest-jobs
408             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
409               <<: *functest-jobs
410             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run'
411               <<: *functest-jobs
412             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_object-run'
413               <<: *functest-jobs
414             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_platform-run'
415               <<: *functest-jobs
416             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_full-run'
417               <<: *functest-jobs
418             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_scenario-run'
419               <<: *functest-jobs
420             - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
421               <<: *functest-jobs
422             - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
423               <<: *functest-jobs
424             - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
425               <<: *functest-jobs
426             - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
427               <<: *functest-jobs
428             - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
429               <<: *functest-jobs
430       - multijob:
431           name: opnfv/functest-benchmarking:{tag}
432           execution-type: PARALLEL
433           condition: ALWAYS
434           projects:
435             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_full-run'
436               <<: *functest-jobs
437             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_jobs-run'
438               <<: *functest-jobs
439             - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
440               <<: *functest-jobs
441             - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
442               <<: *functest-jobs
443       - multijob:
444           name: opnfv/functest-vnf:{tag}
445           execution-type: SEQUENTIALLY
446           condition: ALWAYS
447           projects:
448             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
449               <<: *functest-jobs
450             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
451               <<: *functest-jobs
452             - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
453               <<: *functest-jobs
454             - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
455               <<: *functest-jobs
456             - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
457               <<: *functest-jobs
458       - multijob:
459           name: opnfv/functest-features:{tag}
460           execution-type: PARALLEL
461           condition: ALWAYS
462           projects:
463             - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
464               <<: *functest-jobs
465             - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
466               <<: *functest-jobs
467             - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
468               <<: *functest-jobs
469             - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
470               <<: *functest-jobs
471             - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
472               <<: *functest-jobs
473
474 - job-template:
475     name: 'functest-{repo}-{container}-{tag}-gate'
476     parameters:
477       - functest-slave:
478           slave: '{slave}'
479     scm:
480       - functest-scm:
481           ref: $GERRIT_REFSPEC
482     builders:
483       - functest-build-containers:
484           <<: *functest-build-containers
485           ref: $GERRIT_REFSPEC
486
487 - job-template:
488     name: 'functest-{repo}-{container}-{tag}-check'
489     parameters:
490       - functest-slave:
491           slave: '{slave}'
492       - functest-branch:
493           branch: '{branch}'
494     scm:
495       - functest-scm:
496           ref: $branch
497     builders:
498       - functest-build-containers:
499           <<: *functest-build-containers
500           ref: $branch
501
502 - project:
503     name: 'functest-_-alpine-3.9-rmi'
504     repo: _
505     port:
506     container: alpine
507     tag: 3.9
508     slave: master
509     jobs:
510       - 'functest-{repo}-{container}-{tag}-rmi'
511
512 - project:
513     name: 'functest-_-alpine-3.9-pull'
514     repo: _
515     port:
516     container: alpine
517     tag: 3.9
518     slave: master
519     jobs:
520       - 'functest-{repo}-{container}-{tag}-pull'
521
522 - project:
523     name: functest-opnfv-functest-core-{tag}-build
524     <<: *functest-params
525     container: functest-core
526     ref_arg: BRANCH
527     path: docker/core
528     jobs:
529       - 'functest-{repo}-{container}-{tag}-gate'
530       - 'functest-{repo}-{container}-{tag}-check'
531
532 - project:
533     name: functest-opnfv-functest-tempest-{tag}-build
534     <<: *functest-params
535     container: functest-tempest
536     ref_arg: BRANCH
537     path: docker/tempest
538     jobs:
539       - 'functest-{repo}-{container}-{tag}-gate'
540       - 'functest-{repo}-{container}-{tag}-check'
541
542 - project:
543     name: functest-opnfv-functest-healthcheck-{tag}-build
544     <<: *functest-params
545     container: functest-healthcheck
546     ref_arg: BRANCH
547     path: docker/healthcheck
548     jobs:
549       - 'functest-{repo}-{container}-{tag}-gate'
550       - 'functest-{repo}-{container}-{tag}-check'
551
552 - project:
553     name: functest-opnfv-functest-smoke-{tag}-build
554     <<: *functest-params
555     container: functest-smoke
556     ref_arg: BRANCH
557     path: docker/smoke
558     jobs:
559       - 'functest-{repo}-{container}-{tag}-gate'
560       - 'functest-{repo}-{container}-{tag}-check'
561
562 - project:
563     name: functest-opnfv-functest-benchmarking-{tag}-build
564     <<: *functest-params
565     container: functest-benchmarking
566     ref_arg: BRANCH
567     path: docker/benchmarking
568     jobs:
569       - 'functest-{repo}-{container}-{tag}-gate'
570       - 'functest-{repo}-{container}-{tag}-check'
571
572 - project:
573     name: functest-opnfv-functest-vnf-{tag}-build
574     <<: *functest-params
575     container: functest-vnf
576     ref_arg:
577     path: docker/vnf
578     jobs:
579       - 'functest-{repo}-{container}-{tag}-gate'
580       - 'functest-{repo}-{container}-{tag}-check'
581
582 - project:
583     name: functest-opnfv-functest-features-{tag}-build
584     <<: *functest-params
585     container: functest-features
586     ref_arg: BRANCH
587     path: docker/features
588     jobs:
589       - 'functest-{repo}-{container}-{tag}-gate'
590       - 'functest-{repo}-{container}-{tag}-check'
591
592 - job-template:
593     name: 'functest-{tag}-check'
594     project-type: multijob
595     parameters:
596       - functest-slave:
597           slave: '{slave}'
598       - functest-branch:
599           branch: '{branch}'
600     properties:
601       - build-blocker:
602           use-build-blocker: true
603           blocking-level: 'NODE'
604           blocking-jobs:
605             - '^functest-{tag}-(daily|check|gate)$'
606     builders:
607       - multijob:
608           name: remove former images
609           projects:
610             - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
611               <<: *functest-jobs
612             - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
613               <<: *functest-jobs
614             - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
615               <<: *functest-jobs
616             - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
617               <<: *functest-jobs
618             - name: 'functest-opnfv-functest-features-{tag}-rmi'
619               <<: *functest-jobs
620       - multijob:
621           name: remove dependencies
622           projects:
623             - name: 'functest-_-alpine-3.9-rmi'
624               <<: *functest-jobs
625       - multijob:
626           name: pull dependencies
627           projects:
628             - name: 'functest-_-alpine-3.9-pull'
629               <<: *functest-jobs
630       - multijob:
631           name: build opnfv/functest-core
632           projects:
633             - name: 'functest-opnfv-functest-core-{tag}-check'
634               <<: *functest-jobs
635       - multijob:
636           name: build opnfv/functest-tempest
637           projects:
638             - name: 'functest-opnfv-functest-tempest-{tag}-check'
639               <<: *functest-jobs
640       - multijob:
641           name: build containers
642           projects:
643             - name: 'functest-opnfv-functest-healthcheck-{tag}-check'
644               <<: *functest-jobs
645             - name: 'functest-opnfv-functest-smoke-{tag}-check'
646               <<: *functest-jobs
647             - name: 'functest-opnfv-functest-benchmarking-{tag}-check'
648               <<: *functest-jobs
649             - name: 'functest-opnfv-functest-vnf-{tag}-check'
650               <<: *functest-jobs
651             - name: 'functest-opnfv-functest-features-{tag}-check'
652               <<: *functest-jobs
653       - multijob:
654           name: opnfv/functest-healthcheck:{tag}
655           execution-type: PARALLEL
656           condition: ALWAYS
657           projects:
658             - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
659               <<: *functest-jobs
660             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
661               <<: *functest-jobs
662             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
663               <<: *functest-jobs
664             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
665               <<: *functest-jobs
666             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
667               <<: *functest-jobs
668             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
669               <<: *functest-jobs
670             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
671               <<: *functest-jobs
672             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
673               <<: *functest-jobs
674             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
675               <<: *functest-jobs
676             - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
677               <<: *functest-jobs
678             - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
679               <<: *functest-jobs
680             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_smoke-run'
681               <<: *functest-jobs
682       - multijob:
683           name: opnfv/functest-smoke:{tag}
684           execution-type: PARALLEL
685           condition: SUCCESSFUL
686           projects:
687             - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
688               <<: *functest-jobs
689             - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
690               <<: *functest-jobs
691             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
692               <<: *functest-jobs
693             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run'
694               <<: *functest-jobs
695             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_object-run'
696               <<: *functest-jobs
697             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_platform-run'
698               <<: *functest-jobs
699             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_full-run'
700               <<: *functest-jobs
701             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_scenario-run'
702               <<: *functest-jobs
703             - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
704               <<: *functest-jobs
705             - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
706               <<: *functest-jobs
707             - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
708               <<: *functest-jobs
709             - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
710               <<: *functest-jobs
711             - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
712               <<: *functest-jobs
713       - multijob:
714           name: opnfv/functest-benchmarking:{tag}
715           execution-type: PARALLEL
716           condition: ALWAYS
717           projects:
718             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_full-run'
719               <<: *functest-jobs
720             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_jobs-run'
721               <<: *functest-jobs
722             - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
723               <<: *functest-jobs
724             - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
725               <<: *functest-jobs
726       - multijob:
727           name: opnfv/functest-vnf:{tag}
728           execution-type: SEQUENTIALLY
729           condition: ALWAYS
730           projects:
731             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
732               <<: *functest-jobs
733             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
734               <<: *functest-jobs
735             - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
736               <<: *functest-jobs
737             - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
738               <<: *functest-jobs
739             - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
740               <<: *functest-jobs
741       - multijob:
742           name: opnfv/functest-features:{tag}
743           execution-type: PARALLEL
744           condition: ALWAYS
745           projects:
746             - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
747               <<: *functest-jobs
748             - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
749               <<: *functest-jobs
750             - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
751               <<: *functest-jobs
752             - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
753               <<: *functest-jobs
754             - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
755               <<: *functest-jobs
756
757 - trigger:
758     name: functest-patchset-created
759     triggers:
760       - gerrit:
761           server-name: 'gerrit.opnfv.org'
762           trigger-on:
763             - patchset-created-event
764             - comment-added-contains-event:
765                 comment-contains-value: 'recheck'
766             - comment-added-contains-event:
767                 comment-contains-value: 'reverify'
768           projects:
769             - project-compare-type: 'ANT'
770               project-pattern: 'functest'
771               branches:
772                 - branch-compare-type: 'ANT'
773                   branch-pattern: '**/{branch}'
774           skip-vote:
775             successful: false
776             failed: false
777             unstable: false
778             notbuilt: false
779
780 - job-template:
781     name: 'functest-{tag}-gate'
782     project-type: multijob
783     triggers:
784       - functest-patchset-created:
785           branch: '{branch}'
786     parameters:
787       - functest-slave:
788           slave: '{slave}'
789     properties:
790       - build-blocker:
791           use-build-blocker: true
792           blocking-level: 'NODE'
793           blocking-jobs:
794             - '^functest-{tag}-(daily|check|gate)$'
795     builders:
796       - multijob:
797           name: remove former images
798           projects:
799             - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
800               <<: *functest-jobs
801             - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
802               <<: *functest-jobs
803             - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
804               <<: *functest-jobs
805             - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
806               <<: *functest-jobs
807             - name: 'functest-opnfv-functest-features-{tag}-rmi'
808               <<: *functest-jobs
809       - multijob:
810           name: remove dependencies
811           projects:
812             - name: 'functest-_-alpine-3.9-rmi'
813               <<: *functest-jobs
814       - multijob:
815           name: pull dependencies
816           projects:
817             - name: 'functest-_-alpine-3.9-pull'
818               <<: *functest-jobs
819       - multijob:
820           name: build opnfv/functest-core
821           projects:
822             - name: 'functest-opnfv-functest-core-{tag}-gate'
823               <<: *functest-jobs
824       - multijob:
825           name: build opnfv/functest-tempest
826           projects:
827             - name: 'functest-opnfv-functest-tempest-{tag}-gate'
828               <<: *functest-jobs
829       - multijob:
830           name: build containers
831           projects:
832             - name: 'functest-opnfv-functest-healthcheck-{tag}-gate'
833               <<: *functest-jobs
834             - name: 'functest-opnfv-functest-smoke-{tag}-gate'
835               <<: *functest-jobs
836             - name: 'functest-opnfv-functest-benchmarking-{tag}-gate'
837               <<: *functest-jobs
838             - name: 'functest-opnfv-functest-vnf-{tag}-gate'
839               <<: *functest-jobs
840             - name: 'functest-opnfv-functest-features-{tag}-gate'
841               <<: *functest-jobs
842       - multijob:
843           name: opnfv/functest-healthcheck:{tag}
844           execution-type: PARALLEL
845           condition: ALWAYS
846           projects:
847             - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
848               <<: *functest-jobs
849             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
850               <<: *functest-jobs
851             - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
852               <<: *functest-jobs
853             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
854               <<: *functest-jobs
855             - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
856               <<: *functest-jobs
857             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
858               <<: *functest-jobs
859             - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
860               <<: *functest-jobs
861             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
862               <<: *functest-jobs
863             - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
864               <<: *functest-jobs
865             - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
866               <<: *functest-jobs
867             - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
868               <<: *functest-jobs
869             - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_smoke-run'
870               <<: *functest-jobs
871       - multijob:
872           name: opnfv/functest-smoke:{tag}
873           execution-type: PARALLEL
874           condition: SUCCESSFUL
875           projects:
876             - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
877               <<: *functest-jobs
878             - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
879               <<: *functest-jobs
880             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
881               <<: *functest-jobs
882             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run'
883               <<: *functest-jobs
884             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_object-run'
885               <<: *functest-jobs
886             - name: 'functest-opnfv-functest-smoke-{tag}-refstack_platform-run'
887               <<: *functest-jobs
888             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_full-run'
889               <<: *functest-jobs
890             - name: 'functest-opnfv-functest-smoke-{tag}-tempest_scenario-run'
891               <<: *functest-jobs
892             - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
893               <<: *functest-jobs
894             - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
895               <<: *functest-jobs
896             - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
897               <<: *functest-jobs
898             - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
899               <<: *functest-jobs
900             - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
901               <<: *functest-jobs
902       - multijob:
903           name: opnfv/functest-benchmarking:{tag}
904           execution-type: PARALLEL
905           condition: ALWAYS
906           projects:
907             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_full-run'
908               <<: *functest-jobs
909             - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_jobs-run'
910               <<: *functest-jobs
911             - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
912               <<: *functest-jobs
913             - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
914               <<: *functest-jobs
915       - multijob:
916           name: opnfv/functest-vnf:{tag}
917           execution-type: SEQUENTIALLY
918           condition: ALWAYS
919           projects:
920             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
921               <<: *functest-jobs
922             - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
923               <<: *functest-jobs
924             - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
925               <<: *functest-jobs
926             - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
927               <<: *functest-jobs
928             - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
929               <<: *functest-jobs
930       - multijob:
931           name: opnfv/functest-features:{tag}
932           execution-type: PARALLEL
933           condition: ALWAYS
934           projects:
935             - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
936               <<: *functest-jobs
937             - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
938               <<: *functest-jobs
939             - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
940               <<: *functest-jobs
941             - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
942               <<: *functest-jobs
943             - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
944               <<: *functest-jobs
945
946 - project:
947     name: 'functest'
948     <<: *functest-params
949     jobs:
950       - 'functest-{tag}-daily'
951       - 'functest-{tag}-check'
952       - 'functest-{tag}-gate'
953
954 - view:
955     name: functest
956     view-type: list
957     columns:
958       - status
959       - weather
960       - job
961       - last-success
962       - last-failure
963       - last-duration
964     regex: ^functest-[a-z]+-(daily|check|gate)$