Update Functest jobs (please vote an do not merge)
[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       - 'vnf':
204           job-timeout: 240
205
206     features-suite:
207       - 'doctor-notification'
208       - 'promise'
209       - 'bgpvpn'
210       - 'functest-odl-sfc'
211       - 'domino-multinode'
212       - 'fds'
213       - 'barometercollectd'
214
215     exclude:
216       - features-suite: 'promise'
217         stream: 'master'
218       - features-suite: 'domino-multinode'
219         stream: 'master'
220       - features-suite: 'fds'
221         stream: 'euphrates'
222
223     build-job-settings: &build-job-settings
224       current-parameter: false
225       git-revision: true
226       node-parameters: false
227       kill-phase-on: FAILURE
228       abort-all-jobs: false
229       predefined-parameters: |
230         FUNCTEST_MODE=$FUNCTEST_MODE
231         FUNCTEST_TIER=$FUNCTEST_TIER
232
233     features-job-settings: &features-job-settings
234       current-parameter: false
235       git-revision: true
236       node-parameters: false
237       kill-phase-on: FAILURE
238       abort-all-jobs: false
239       predefined-parameters: |
240         FUNCTEST_MODE=$FUNCTEST_MODE
241         FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
242
243     jobs:
244       - 'functest-{installer}-{pod}-suite-{stream}'
245       - 'functest-{installer}-{pod}-daily-{stream}'
246       - 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}'
247       - 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}'
248 ################################
249 # job template
250 ################################
251 - job-template:
252
253     name: 'functest-{installer}-{pod}-daily-{stream}'
254
255     project-type: multijob
256
257     disabled: '{obj:disabled}'
258
259     parameters:
260       - project-parameter:
261           project: '{project}'
262           branch: '{branch}'
263       - '{installer}-defaults'
264       - '{slave-label}-defaults'
265       - functest-parameter:
266           gs-pathname: '{gs-pathname}'
267
268     builders:
269       - multijob:
270           name: 'Run functest tests'
271           execution-type: SEQUENTIAL
272           projects:
273             - name: 'functest-{installer}-{pod}-daily-healthcheck-{stream}'
274               <<: *build-job-settings
275             - name: 'functest-{installer}-{pod}-daily-smoke-{stream}'
276               <<: *build-job-settings
277             - name: 'functest-{installer}-{pod}-daily-vnf-{stream}'
278               <<: *build-job-settings
279             - name: 'functest-{installer}-{pod}-daily-features-doctor-notification-{stream}'
280               <<: *features-job-settings
281             - name: 'functest-{installer}-{pod}-daily-features-bgpvpn-{stream}'
282               <<: *features-job-settings
283             - name: 'functest-{installer}-{pod}-daily-features-functest-odl-sfc-{stream}'
284               <<: *features-job-settings
285             - name: 'functest-{installer}-{pod}-daily-features-barometercollectd-{stream}'
286               <<: *features-job-settings
287             - name: 'functest-{installer}-{pod}-daily-features-fds-{stream}'
288               <<: *features-job-settings
289             - name: 'functest-{installer}-{pod}-daily-features-promise-{stream}'
290               <<: *features-job-settings
291             - name: 'functest-{installer}-{pod}-daily-features-domino-multinode-{stream}'
292               <<: *features-job-settings
293
294 - job-template: &functest-installer-tier-job
295
296     name: 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}'
297
298     concurrent: true
299
300     properties:
301       - logrotate-default
302       - throttle:
303           enabled: true
304           max-per-node: 1
305           option: 'project'
306
307     wrappers:
308       - build-name:
309           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
310       - timeout:
311           timeout: '{job-timeout}'
312           abort: true
313
314     parameters:
315       - project-parameter:
316           project: '{project}'
317           branch: '{branch}'
318       - '{installer}-defaults'
319       - '{slave-label}-defaults'
320       - string:
321           name: FUNCTEST_MODE
322           default: 'tier'
323       - string:
324           name: FUNCTEST_TIER
325           default: '{functest-tier}'
326       - string:
327           name: DEPLOY_SCENARIO
328           default: 'os-nosdn-nofeature-noha'
329       - string:
330           name: CLEAN_DOCKER_IMAGES
331           default: 'false'
332           description: 'Remove downloaded docker images (opnfv/functest*:*)'
333       - functest-parameter:
334           gs-pathname: '{gs-pathname}'
335
336     scm:
337       - git-scm
338
339     builders:
340       - description-setter:
341           description: "Built on $NODE_NAME"
342       - 'functest-daily-builder'
343
344     publishers:
345       - 'functest-recipients'
346       - 'fuel-recipients'
347
348 - job-template:
349
350     name: 'functest-{installer}-{pod}-suite-{stream}'
351     <<: *functest-installer-tier-job
352
353     wrappers:
354       - build-name:
355           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
356       - timeout:
357           timeout: '60'
358           abort: true
359     parameters:
360       - project-parameter:
361           project: '{project}'
362           branch: '{branch}'
363       - '{installer}-defaults'
364       - '{slave-label}-defaults'
365       - 'functest-suite-parameter'
366       - string:
367           name: DEPLOY_SCENARIO
368           default: 'os-nosdn-nofeature-noha'
369       - string:
370           name: CLEAN_DOCKER_IMAGES
371           default: 'false'
372           description: 'Remove downloaded docker images (opnfv/functest*:*)'
373       - functest-parameter:
374           gs-pathname: '{gs-pathname}'
375
376     builders:
377       - description-setter:
378           description: "Built on $NODE_NAME"
379       - 'functest-suite-builder'
380
381 - job-template:
382
383     name: 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}'
384     concurrent: true
385     properties:
386       - logrotate-default
387       - throttle:
388           enabled: true
389           max-per-node: 1
390           option: 'project'
391     wrappers:
392       - build-name:
393           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
394
395     parameters:
396       - project-parameter:
397           project: '{project}'
398           branch: '{branch}'
399       - '{installer}-defaults'
400       - '{slave-label}-defaults'
401       - string:
402           name: FUNCTEST_MODE
403           default: 'testcase'
404       - string:
405           name: FUNCTEST_SUITE_NAME
406           default: '{features-suite}'
407       - string:
408           name: DEPLOY_SCENARIO
409           default: 'os-nosdn-nofeature-noha'
410       - string:
411           name: CLEAN_DOCKER_IMAGES
412           default: 'false'
413           description: 'Remove downloaded docker images (opnfv/functest*:*)'
414       - functest-parameter:
415           gs-pathname: '{gs-pathname}'
416
417     scm:
418       - git-scm
419
420     builders:
421       - description-setter:
422           description: "Built on $NODE_NAME"
423       - 'functest-daily-builder'
424
425     publishers:
426       - 'functest-features-recipients'
427       - 'functest-recipients'
428       - 'fuel-recipients'
429
430
431 ########################
432 # parameter macros
433 ########################
434 - parameter:
435     name: functest-daily-parameter
436     parameters:
437       - string:
438           name: FUNCTEST_MODE
439           default: 'daily'
440           description: "Daily suite name to run"
441
442 - parameter:
443     name: functest-suite-parameter
444     parameters:
445       - choice:
446           name: FUNCTEST_MODE
447           choices:
448             - 'tier'
449             - 'testcase'
450           default: 'tier'
451           description: "Test case or Tier to be run"
452       - choice:
453           name: FUNCTEST_SUITE_NAME
454           choices:
455             - 'connection_check'
456             - 'api_check'
457             - 'snaps_health_check'
458             - 'vping_userdata'
459             - 'vping_ssh'
460             - 'tempest_smoke_serial'
461             - 'rally_sanity'
462             - 'odl'
463             - 'odl_netvirt'
464             - 'snaps_smoke'
465             - 'refstack_defcore'
466             - 'promise'
467             - 'doctor'
468             - 'bgpvpn'
469             - 'parser'
470             - 'security_scan'
471             - 'tempest_full_parallel'
472             - 'rally_full'
473             - 'cloudify_ims'
474             - 'cloudify_vrouter'
475             - 'orchestra_openims'
476             - 'orchestra_clearwaterims'
477           default: 'connection_check'
478       - choice:
479           name: FUNCTEST_TIER
480           choices:
481             - 'healthcheck'
482             - 'smoke'
483             - 'features'
484             - 'components'
485             - 'vnf'
486           default: 'healthcheck'
487       - string:
488           name: TESTCASE_OPTIONS
489           default: ''
490           description: 'Additional parameters specific to test case(s)'
491
492 - parameter:
493     name: functest-parameter
494     parameters:
495       - string:
496           name: GS_PATHNAME
497           default: '{gs-pathname}'
498           description: "Version directory where the opnfv documents will be stored in gs repository"
499       - string:
500           name: FUNCTEST_REPO_DIR
501           default: "/home/opnfv/repos/functest"
502           description: "Directory where the Functest repository is cloned"
503       - string:
504           name: PUSH_RESULTS_TO_DB
505           default: "true"
506           description: "Push the results of all the tests to the resultDB"
507       - string:
508           name: CI_DEBUG
509           default: 'false'
510           description: "Show debug output information"
511       - string:
512           name: RC_FILE_PATH
513           default: ''
514           description: "Path to the OS credentials file if given"
515 ########################
516 # trigger macros
517 ########################
518 - trigger:
519     name: 'functest-master'
520     triggers:
521       - pollscm:
522           cron: "H 9 * * *"
523 ########################
524 # builder macros
525 ########################
526 - builder:
527     name: functest-daily-builder
528     builders:
529       - 'functest-cleanup'
530       - 'functest-daily'
531       - 'functest-store-results'
532       - 'functest-exit'
533
534 - builder:
535     name: functest-suite-builder
536     builders:
537       - 'functest-cleanup'
538       - 'functest-daily'
539       - 'functest-store-results'
540       - 'functest-exit'
541
542 - builder:
543     name: functest-daily
544     builders:
545       # yamllint disable rule:indentation
546       - conditional-step:
547           condition-kind: regex-match
548           regex: "os-.*"
549           label: '$DEPLOY_SCENARIO'
550           steps:
551             - shell:
552                 !include-raw:
553                     - ./functest-env-presetup.sh
554                     - ../../utils/fetch_os_creds.sh
555                     - ./functest-alpine.sh
556       - conditional-step:
557           condition-kind: regex-match
558           regex: "k8-.*"
559           label: '$DEPLOY_SCENARIO'
560           steps:
561             - shell:
562                 !include-raw:
563                     - ../../utils/fetch_k8_conf.sh
564                     - ./functest-k8.sh
565
566 # yamllint enable rule:indentation
567 - builder:
568     name: functest-store-results
569     builders:
570       - shell:
571           !include-raw: ../../utils/push-test-logs.sh
572
573 - builder:
574     name: functest-cleanup
575     builders:
576       - shell:
577           !include-raw: ./functest-cleanup.sh
578
579 - builder:
580     name: functest-exit
581     builders:
582       - shell:
583           !include-raw: ./functest-exit.sh
584
585
586 - publisher:
587     name: 'functest-features-recipients'
588     publishers:
589       - email:
590           recipients:
591
592 - publisher:
593     name: 'functest-recipients'
594     publishers:
595       - email:
596           recipients: >
597             jalausuch@suse.com morgan.richomme@orange.com
598             cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
599             juha.kosonen@nokia.com wangwulin@huawei.com
600             delia.popescu@enea.com cristina.pauna@enea.com
601             valentin.boucher@kontron.com
602       - email-jenkins-admins-on-failure
603
604 - publisher:
605     name: 'fuel-recipients'
606     publishers:
607       - email:
608           recipients: >
609             peter.barabas@ericsson.com mpolenchuck@mirantis.com
610             alexandru.avadanii@enea.com guillermo.herrero@enea.com