Run all tests in a specific step
[releng.git] / jjb / functest / functest-daily-jobs.yml
1 ---
2 ###################################
3 # job configuration for functest
4 ###################################
5 - project:
6     name: functest-daily
7
8     project: functest
9
10     # -------------------------------
11     # BRANCH ANCHORS
12     # -------------------------------
13     master: &master
14       stream: master
15       branch: '{stream}'
16       gs-pathname: ''
17       disabled: false
18     euphrates: &euphrates
19       stream: euphrates
20       branch: 'stable/{stream}'
21       gs-pathname: '/{stream}'
22       disabled: false
23     # -------------------------------
24     # POD, INSTALLER, AND BRANCH MAPPING
25     # -------------------------------
26     #    Installers using labels
27     #            CI PODs
28     # This section should only contain the installers
29     # that have been switched using labels for slaves
30     # -------------------------------
31     pod:
32       # fuel CI PODs
33       - baremetal:
34           slave-label: fuel-baremetal
35           installer: fuel
36           <<: *master
37       - virtual:
38           slave-label: fuel-virtual
39           installer: fuel
40           <<: *master
41       - baremetal:
42           slave-label: fuel-baremetal
43           installer: fuel
44           <<: *euphrates
45       - virtual:
46           slave-label: fuel-virtual
47           installer: fuel
48           <<: *euphrates
49       # joid CI PODs
50       - baremetal:
51           slave-label: joid-baremetal
52           installer: joid
53           <<: *master
54       - virtual:
55           slave-label: joid-virtual
56           installer: joid
57           <<: *master
58       - baremetal:
59           slave-label: joid-baremetal
60           installer: joid
61           <<: *euphrates
62       - virtual:
63           slave-label: joid-virtual
64           installer: joid
65           <<: *euphrates
66       # compass CI PODs
67       - baremetal:
68           slave-label: compass-baremetal
69           installer: compass
70           <<: *master
71       - virtual:
72           slave-label: compass-virtual
73           installer: compass
74           <<: *master
75       - baremetal:
76           slave-label: compass-baremetal
77           installer: compass
78           <<: *euphrates
79       - virtual:
80           slave-label: compass-virtual
81           installer: compass
82           <<: *euphrates
83       # apex CI PODs
84       - virtual:
85           slave-label: apex-virtual-master
86           installer: apex
87           <<: *master
88       - baremetal:
89           slave-label: apex-baremetal-master
90           installer: apex
91           <<: *master
92       - virtual:
93           slave-label: apex-virtual-euphrates
94           installer: apex
95           <<: *euphrates
96       - baremetal:
97           slave-label: apex-baremetal-euphrates
98           installer: apex
99           <<: *euphrates
100       # armband CI PODs
101       - armband-baremetal:
102           slave-label: armband-baremetal
103           installer: fuel
104           <<: *master
105       - armband-virtual:
106           slave-label: armband-virtual
107           installer: fuel
108           <<: *master
109       - armband-baremetal:
110           slave-label: armband-baremetal
111           installer: fuel
112           <<: *euphrates
113       - armband-virtual:
114           slave-label: armband-virtual
115           installer: fuel
116           <<: *euphrates
117       # daisy CI PODs
118       - baremetal:
119           slave-label: daisy-baremetal
120           installer: daisy
121           <<: *master
122       - virtual:
123           slave-label: daisy-virtual
124           installer: daisy
125           <<: *master
126       - baremetal:
127           slave-label: daisy-baremetal
128           installer: daisy
129           <<: *euphrates
130       - virtual:
131           slave-label: daisy-virtual
132           installer: daisy
133           <<: *euphrates
134       # netvirt 3rd party ci
135       - virtual:
136           slave-label: odl-netvirt-virtual
137           installer: netvirt
138           <<: *master
139       # -------------------------------
140       #        None-CI PODs
141       # -------------------------------
142       - orange-pod1:
143           slave-label: '{pod}'
144           installer: joid
145           <<: *master
146       - orange-pod5:
147           slave-label: '{pod}'
148           installer: fuel
149           <<: *master
150       - orange-pod2:
151           slave-label: '{pod}'
152           installer: joid
153           <<: *master
154       - baremetal-centos:
155           slave-label: 'intel-pod8'
156           installer: compass
157           <<: *master
158       - nokia-pod1:
159           slave-label: '{pod}'
160           installer: apex
161           <<: *master
162       - zte-pod1:
163           slave-label: '{pod}'
164           installer: fuel
165           <<: *master
166       - zte-pod1:
167           slave-label: '{pod}'
168           installer: fuel
169           <<: *euphrates
170       - zte-pod2:
171           slave-label: '{pod}'
172           installer: daisy
173           <<: *master
174       - zte-pod2:
175           slave-label: '{pod}'
176           installer: daisy
177           <<: *euphrates
178       - zte-pod3:
179           slave-label: '{pod}'
180           installer: daisy
181           <<: *master
182       - zte-pod3:
183           slave-label: '{pod}'
184           installer: daisy
185           <<: *euphrates
186       - zte-pod9:
187           slave-label: '{pod}'
188           installer: daisy
189           <<: *master
190     # -------------------------------
191     # PODs for verify jobs triggered by each patch upload
192     #   - ool-virtual1:
193     #       slave-label: '{pod}'
194     #       installer: apex
195     #       <<: *master
196     # -------------------------------
197
198     functest-tier:
199       - 'healthcheck':
200           job-timeout: 20
201       - 'smoke':
202           job-timeout: 180
203       - 'components':
204           job-timeout: 240
205       - 'patrole':
206           job-timeout: 20
207       - 'vnf':
208           job-timeout: 240
209       - 'parser':
210           job-timeout: 20
211
212     features-suite:
213       - 'doctor-notification'
214       - 'promise'
215       - 'bgpvpn'
216       - 'functest-odl-sfc'
217       - 'domino-multinode'
218       - 'fds'
219       - 'barometercollectd'
220
221     exclude:
222       - features-suite: 'promise'
223         stream: 'master'
224       - features-suite: 'domino-multinode'
225         stream: 'master'
226       - features-suite: 'patrole'
227         stream: 'euphrates'
228
229     build-job-settings: &build-job-settings
230       current-parameter: false
231       git-revision: true
232       node-parameters: false
233       kill-phase-on: FAILURE
234       abort-all-jobs: false
235       predefined-parameters: |
236         FUNCTEST_MODE=$FUNCTEST_MODE
237         FUNCTEST_TIER=$FUNCTEST_TIER
238
239     features-job-settings: &features-job-settings
240       current-parameter: false
241       git-revision: true
242       node-parameters: false
243       kill-phase-on: FAILURE
244       abort-all-jobs: false
245       predefined-parameters: |
246         FUNCTEST_MODE=$FUNCTEST_MODE
247         FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
248
249     jobs:
250       - 'functest-{installer}-{pod}-suite-{stream}'
251       - 'functest-{installer}-{pod}-daily-{stream}'
252       - 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}'
253       - 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}'
254 ################################
255 # job template
256 ################################
257 - job-template:
258
259     name: 'functest-{installer}-{pod}-daily-{stream}'
260
261     project-type: multijob
262
263     disabled: '{obj:disabled}'
264
265     parameters:
266       - project-parameter:
267           project: '{project}'
268           branch: '{branch}'
269       - '{installer}-defaults'
270       - '{slave-label}-defaults'
271       - functest-parameter:
272           gs-pathname: '{gs-pathname}'
273
274     builders:
275       - multijob:
276           name: 'Run healthcheck'
277           execution-type: PARALLEL
278           projects:
279             - name: 'functest-{installer}-{pod}-daily-healthcheck-{stream}'
280               <<: *build-job-settings
281       - multijob:
282           name: 'Run smoke'
283           execution-type: PARALLEL
284           projects:
285             - name: 'functest-{installer}-{pod}-daily-smoke-{stream}'
286               <<: *build-job-settings
287       - multijob:
288           name: 'Run patrole'
289           execution-type: PARALLEL
290           projects:
291             - name: 'functest-{installer}-{pod}-daily-patrole-{stream}'
292               <<: *build-job-settings
293
294       - multijob:
295           name: 'Run vnf'
296           execution-type: PARALLEL
297           projects:
298             - name: 'functest-{installer}-{pod}-daily-vnf-{stream}'
299               <<: *build-job-settings
300
301       - multijob:
302           name: 'Run doctor-notification'
303           execution-type: PARALLEL
304           projects:
305             - name: 'functest-{installer}-{pod}-daily-features-doctor-notification-{stream}'
306               <<: *features-job-settings
307
308       - multijob:
309           name: 'Run bgpvpn'
310           execution-type: PARALLEL
311           projects:
312             - name: 'functest-{installer}-{pod}-daily-features-bgpvpn-{stream}'
313               <<: *features-job-settings
314
315       - multijob:
316           name: 'Run odl-sfc'
317           execution-type: PARALLEL
318           projects:
319             - name: 'functest-{installer}-{pod}-daily-features-functest-odl-sfc-{stream}'
320               <<: *features-job-settings
321
322       - multijob:
323           name: 'Run barometercollectd'
324           execution-type: PARALLEL
325           projects:
326             - name: 'functest-{installer}-{pod}-daily-features-barometercollectd-{stream}'
327               <<: *features-job-settings
328
329       - multijob:
330           name: 'Run fds'
331           execution-type: PARALLEL
332           projects:
333             - name: 'functest-{installer}-{pod}-daily-features-fds-{stream}'
334               <<: *features-job-settings
335
336       - multijob:
337           name: 'Run promise'
338           execution-type: PARALLEL
339           projects:
340             - name: 'functest-{installer}-{pod}-daily-features-promise-{stream}'
341               <<: *features-job-settings
342
343       - multijob:
344           name: 'Run domino-multinode'
345           execution-type: PARALLEL
346           projects:
347             - name: 'functest-{installer}-{pod}-daily-features-domino-multinode-{stream}'
348               <<: *features-job-settings
349
350       - multijob:
351           name: 'Run parser'
352           execution-type: PARALLEL
353           projects:
354             - name: 'functest-{installer}-{pod}-daily-parser-{stream}'
355               <<: *build-job-settings
356
357 - job-template: &functest-installer-tier-job
358
359     name: 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}'
360
361     concurrent: true
362
363     properties:
364       - logrotate-default
365       - throttle:
366           enabled: true
367           max-per-node: 1
368           option: 'project'
369
370     wrappers:
371       - build-name:
372           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
373       - timeout:
374           timeout: '{job-timeout}'
375           abort: true
376
377     parameters:
378       - project-parameter:
379           project: '{project}'
380           branch: '{branch}'
381       - '{installer}-defaults'
382       - '{slave-label}-defaults'
383       - string:
384           name: FUNCTEST_MODE
385           default: 'tier'
386       - string:
387           name: FUNCTEST_TIER
388           default: '{functest-tier}'
389       - string:
390           name: DEPLOY_SCENARIO
391           default: 'os-nosdn-nofeature-noha'
392       - string:
393           name: CLEAN_DOCKER_IMAGES
394           default: 'false'
395           description: 'Remove downloaded docker images (opnfv/functest*:*)'
396       - functest-parameter:
397           gs-pathname: '{gs-pathname}'
398
399     scm:
400       - git-scm
401
402     builders:
403       - description-setter:
404           description: "Built on $NODE_NAME"
405       - 'functest-daily-builder'
406
407     publishers:
408       - 'functest-recipients'
409       - 'fuel-recipients'
410
411 - job-template:
412
413     name: 'functest-{installer}-{pod}-suite-{stream}'
414     <<: *functest-installer-tier-job
415
416     wrappers:
417       - build-name:
418           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
419       - timeout:
420           timeout: '60'
421           abort: true
422     parameters:
423       - project-parameter:
424           project: '{project}'
425           branch: '{branch}'
426       - '{installer}-defaults'
427       - '{slave-label}-defaults'
428       - 'functest-suite-parameter'
429       - string:
430           name: DEPLOY_SCENARIO
431           default: 'os-nosdn-nofeature-noha'
432       - string:
433           name: CLEAN_DOCKER_IMAGES
434           default: 'false'
435           description: 'Remove downloaded docker images (opnfv/functest*:*)'
436       - functest-parameter:
437           gs-pathname: '{gs-pathname}'
438
439     builders:
440       - description-setter:
441           description: "Built on $NODE_NAME"
442       - 'functest-suite-builder'
443
444 - job-template:
445
446     name: 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}'
447     concurrent: true
448     properties:
449       - logrotate-default
450       - throttle:
451           enabled: true
452           max-per-node: 1
453           option: 'project'
454     wrappers:
455       - build-name:
456           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
457
458     parameters:
459       - project-parameter:
460           project: '{project}'
461           branch: '{branch}'
462       - '{installer}-defaults'
463       - '{slave-label}-defaults'
464       - string:
465           name: FUNCTEST_MODE
466           default: 'testcase'
467       - string:
468           name: FUNCTEST_SUITE_NAME
469           default: '{features-suite}'
470       - string:
471           name: DEPLOY_SCENARIO
472           default: 'os-nosdn-nofeature-noha'
473       - string:
474           name: CLEAN_DOCKER_IMAGES
475           default: 'false'
476           description: 'Remove downloaded docker images (opnfv/functest*:*)'
477       - functest-parameter:
478           gs-pathname: '{gs-pathname}'
479
480     scm:
481       - git-scm
482
483     builders:
484       - description-setter:
485           description: "Built on $NODE_NAME"
486       - 'functest-daily-builder'
487
488     publishers:
489       - 'functest-features-recipients'
490       - 'functest-recipients'
491       - 'fuel-recipients'
492
493
494 ########################
495 # parameter macros
496 ########################
497 - parameter:
498     name: functest-daily-parameter
499     parameters:
500       - string:
501           name: FUNCTEST_MODE
502           default: 'daily'
503           description: "Daily suite name to run"
504
505 - parameter:
506     name: functest-suite-parameter
507     parameters:
508       - choice:
509           name: FUNCTEST_MODE
510           choices:
511             - 'tier'
512             - 'testcase'
513           default: 'tier'
514           description: "Test case or Tier to be run"
515       - choice:
516           name: FUNCTEST_SUITE_NAME
517           choices:
518             - 'connection_check'
519             - 'api_check'
520             - 'snaps_health_check'
521             - 'vping_userdata'
522             - 'vping_ssh'
523             - 'tempest_smoke_serial'
524             - 'rally_sanity'
525             - 'odl'
526             - 'odl_netvirt'
527             - 'snaps_smoke'
528             - 'refstack_defcore'
529             - 'patrole'
530             - 'promise'
531             - 'doctor'
532             - 'bgpvpn'
533             - 'parser'
534             - 'security_scan'
535             - 'tempest_full_parallel'
536             - 'rally_full'
537             - 'cloudify_ims'
538             - 'cloudify_vrouter'
539             - 'orchestra_openims'
540             - 'orchestra_clearwaterims'
541           default: 'connection_check'
542       - choice:
543           name: FUNCTEST_TIER
544           choices:
545             - 'healthcheck'
546             - 'smoke'
547             - 'patrole'
548             - 'features'
549             - 'components'
550             - 'vnf'
551             - 'parser'
552           default: 'healthcheck'
553       - string:
554           name: TESTCASE_OPTIONS
555           default: ''
556           description: 'Additional parameters specific to test case(s)'
557
558 - parameter:
559     name: functest-parameter
560     parameters:
561       - string:
562           name: GS_PATHNAME
563           default: '{gs-pathname}'
564           description: "Version directory where the opnfv documents will be stored in gs repository"
565       - string:
566           name: FUNCTEST_REPO_DIR
567           default: "/home/opnfv/repos/functest"
568           description: "Directory where the Functest repository is cloned"
569       - string:
570           name: PUSH_RESULTS_TO_DB
571           default: "true"
572           description: "Push the results of all the tests to the resultDB"
573       - string:
574           name: CI_DEBUG
575           default: 'false'
576           description: "Show debug output information"
577       - string:
578           name: RC_FILE_PATH
579           default: ''
580           description: "Path to the OS credentials file if given"
581 ########################
582 # trigger macros
583 ########################
584 - trigger:
585     name: 'functest-master'
586     triggers:
587       - pollscm:
588           cron: "H 9 * * *"
589 ########################
590 # builder macros
591 ########################
592 - builder:
593     name: functest-daily-builder
594     builders:
595       - 'functest-cleanup'
596       - 'functest-daily'
597       - 'functest-store-results'
598       - 'functest-exit'
599
600 - builder:
601     name: functest-suite-builder
602     builders:
603       - 'functest-cleanup'
604       - 'functest-daily'
605       - 'functest-store-results'
606       - 'functest-exit'
607
608 - builder:
609     name: functest-daily
610     builders:
611       # yamllint disable rule:indentation
612       - conditional-step:
613           condition-kind: regex-match
614           regex: "os-.*"
615           label: '$DEPLOY_SCENARIO'
616           steps:
617             - shell:
618                 !include-raw:
619                     - ./functest-env-presetup.sh
620                     - ../../utils/fetch_os_creds.sh
621                     - ./functest-alpine.sh
622       - conditional-step:
623           condition-kind: regex-match
624           regex: "k8-.*"
625           label: '$DEPLOY_SCENARIO'
626           steps:
627             - shell:
628                 !include-raw:
629                     - ../../utils/fetch_k8_conf.sh
630                     - ./functest-k8.sh
631
632 # yamllint enable rule:indentation
633 - builder:
634     name: functest-store-results
635     builders:
636       - shell:
637           !include-raw: ../../utils/push-test-logs.sh
638
639 - builder:
640     name: functest-cleanup
641     builders:
642       - shell:
643           !include-raw: ./functest-cleanup.sh
644
645 - builder:
646     name: functest-exit
647     builders:
648       - shell:
649           !include-raw: ./functest-exit.sh
650
651
652 - publisher:
653     name: 'functest-features-recipients'
654     publishers:
655       - email:
656           recipients:
657
658 - publisher:
659     name: 'functest-recipients'
660     publishers:
661       - email:
662           recipients: >
663             jalausuch@suse.com morgan.richomme@orange.com
664             cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
665             juha.kosonen@nokia.com wangwulin@huawei.com
666             delia.popescu@enea.com cristina.pauna@enea.com
667             valentin.boucher@kontron.com
668       - email-jenkins-admins-on-failure
669
670 - publisher:
671     name: 'fuel-recipients'
672     publishers:
673       - email:
674           recipients: >
675             peter.barabas@ericsson.com mpolenchuck@mirantis.com
676             alexandru.avadanii@enea.com guillermo.herrero@enea.com