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