Merge "This job will allow projects to create custom docker jobs"
[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       docker-tag: 'latest'
18     euphrates: &euphrates
19       stream: euphrates
20       branch: 'stable/{stream}'
21       gs-pathname: '/{stream}'
22       docker-tag: 'stable'
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     # PODs for verify jobs triggered by each patch upload
187     #   - ool-virtual1:
188     #       slave-label: '{pod}'
189     #       installer: apex
190     #       <<: *master
191     # -------------------------------
192
193     alpine-pod:
194       - ericsson-virtual-pod1bl01:
195           slave-label: '{alpine-pod}'
196           installer: fuel
197           <<: *master
198       - huawei-virtual5:
199           slave-label: '{alpine-pod}'
200           installer: compass
201           <<: *master
202
203     testsuite:
204       - 'suite':
205           job-timeout: 60
206       - 'daily':
207           job-timeout: 240
208       - 'arm-daily':
209           job-timeout: 240
210
211     jobs:
212       - 'functest-{installer}-{pod}-{testsuite}-{stream}'
213       - 'functest-alpine-{installer}-{alpine-pod}-{testsuite}-{stream}'
214
215 ################################
216 # job template
217 ################################
218 - job-template:
219     name: 'functest-{installer}-{pod}-{testsuite}-{stream}'
220
221     concurrent: true
222
223     properties:
224       - logrotate-default
225       - throttle:
226           enabled: true
227           max-per-node: 1
228           option: 'project'
229
230     wrappers:
231       - build-name:
232           name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
233       - timeout:
234           timeout: '{job-timeout}'
235           abort: true
236
237     parameters:
238       - project-parameter:
239           project: '{project}'
240           branch: '{branch}'
241       - '{installer}-defaults'
242       - '{slave-label}-defaults'
243       - 'functest-{testsuite}-parameter'
244       - string:
245           name: DEPLOY_SCENARIO
246           default: 'os-odl_l2-nofeature-ha'
247       - string:
248           name: DOCKER_TAG
249           default: '{docker-tag}'
250           description: 'Tag to pull docker image'
251       - string:
252           name: CLEAN_DOCKER_IMAGES
253           default: 'false'
254           description: 'Remove downloaded docker images (opnfv/functest*:*)'
255       - functest-parameter:
256           gs-pathname: '{gs-pathname}'
257
258     scm:
259       - git-scm
260
261     builders:
262       - description-setter:
263           description: "Built on $NODE_NAME"
264       - 'functest-{testsuite}-builder'
265
266 - job-template:
267     name: 'functest-alpine-{installer}-{alpine-pod}-{testsuite}-{stream}'
268
269     concurrent: true
270
271     properties:
272       - logrotate-default
273       - throttle:
274           enabled: true
275           max-per-node: 1
276           option: 'project'
277
278     wrappers:
279       - build-name:
280           name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
281       - timeout:
282           timeout: '{job-timeout}'
283           abort: true
284
285     parameters:
286       - project-parameter:
287           project: '{project}'
288           branch: '{branch}'
289       - '{installer}-defaults'
290       - '{slave-label}-defaults'
291       - 'functest-{testsuite}-parameter'
292       - string:
293           name: DEPLOY_SCENARIO
294           default: 'os-nosdn-nofeature-noha'
295       - functest-parameter:
296           gs-pathname: '{gs-pathname}'
297
298     scm:
299       - git-scm
300
301     builders:
302       - description-setter:
303           description: "Built on $NODE_NAME"
304       - 'functest-alpine-daily-builder'
305
306 ########################
307 # parameter macros
308 ########################
309 - parameter:
310     name: functest-daily-parameter
311     parameters:
312       - string:
313           name: FUNCTEST_MODE
314           default: 'daily'
315           description: "Daily suite name to run"
316
317 - parameter:
318     name: functest-arm-daily-parameter
319     parameters:
320       - string:
321           name: FUNCTEST_MODE
322           default: 'arm-daily'
323           description: "Daily suite name (Aarch64) to run"
324
325 - parameter:
326     name: functest-suite-parameter
327     parameters:
328       - choice:
329           name: FUNCTEST_MODE
330           choices:
331             - 'tier'
332             - 'testcase'
333           default: 'tier'
334           description: "Test case or Tier to be run"
335       - choice:
336           name: FUNCTEST_SUITE_NAME
337           choices:
338             - 'connection_check'
339             - 'api_check'
340             - 'snaps_health_check'
341             - 'vping_userdata'
342             - 'vping_ssh'
343             - 'tempest_smoke_serial'
344             - 'rally_sanity'
345             - 'odl'
346             - 'odl_netvirt'
347             - 'snaps_smoke'
348             - 'refstack_defcore'
349             - 'promise'
350             - 'doctor'
351             - 'bgpvpn'
352             - 'parser'
353             - 'security_scan'
354             - 'tempest_full_parallel'
355             - 'rally_full'
356             - 'cloudify_ims'
357             - 'cloudify_vrouter'
358             - 'orchestra_openims'
359             - 'orchestra_clearwaterims'
360           default: 'connection_check'
361       - choice:
362           name: FUNCTEST_TIER
363           choices:
364             - 'healthcheck'
365             - 'smoke'
366             - 'features'
367             - 'components'
368             - 'vnf'
369           default: 'healthcheck'
370       - string:
371           name: TESTCASE_OPTIONS
372           default: ''
373           description: 'Additional parameters specific to test case(s)'
374
375 - parameter:
376     name: functest-parameter
377     parameters:
378       - string:
379           name: GS_PATHNAME
380           default: '{gs-pathname}'
381           description: "Version directory where the opnfv documents will be stored in gs repository"
382       - string:
383           name: FUNCTEST_REPO_DIR
384           default: "/home/opnfv/repos/functest"
385           description: "Directory where the Functest repository is cloned"
386       - string:
387           name: PUSH_RESULTS_TO_DB
388           default: "true"
389           description: "Push the results of all the tests to the resultDB"
390       - string:
391           name: CI_DEBUG
392           default: 'false'
393           description: "Show debug output information"
394       - string:
395           name: RC_FILE_PATH
396           default: ''
397           description: "Path to the OS credentials file if given"
398 ########################
399 # trigger macros
400 ########################
401 - trigger:
402     name: 'functest-master'
403     triggers:
404       - pollscm:
405           cron: "H 9 * * *"
406 ########################
407 # builder macros
408 ########################
409 - builder:
410     name: functest-daily-builder
411     builders:
412       - 'functest-cleanup'
413       - 'functest-daily'
414       - 'functest-store-results'
415       - 'functest-exit'
416
417 - builder:
418     name: functest-arm-daily-builder
419     builders:
420       - 'functest-cleanup'
421       - 'set-functest-env'
422       - 'functest-arm-daily'
423       - 'functest-store-results'
424       - 'functest-exit'
425
426 - builder:
427     name: functest-suite-builder
428     builders:
429       - 'functest-cleanup'
430       - 'set-functest-env-alpine'
431       - 'functest-suite'
432       - 'functest-store-results'
433       - 'functest-exit'
434
435 - builder:
436     name: functest-alpine-daily-builder
437     builders:
438       - 'functest-cleanup'
439       - 'set-functest-env-alpine'
440       - 'functest-daily'
441       - 'functest-store-results'
442       - 'functest-exit'
443
444 - builder:
445     name: functest-daily
446     builders:
447       # yamllint disable rule:indentation
448       - shell:
449           !include-raw:
450               - ./functest-env-presetup.sh
451               - ../../utils/fetch_os_creds.sh
452               - ./functest-alpine.sh
453
454 # yamllint enable rule:indentation
455 - builder:
456     name: functest-arm-daily
457     builders:
458       - shell:
459           !include-raw: ./functest-loop.sh
460
461 - builder:
462     name: functest-suite
463     builders:
464       # yamllint disable rule:indentation
465       - shell:
466           !include-raw:
467               - ./functest-alpine.sh
468
469 # yamllint enable rule:indentation
470 - builder:
471     name: set-functest-env
472     builders:
473       # yamllint disable rule:indentation
474       - shell:
475           !include-raw:
476               - ./functest-env-presetup.sh
477               - ../../utils/fetch_os_creds.sh
478               - ./set-functest-env.sh
479
480 # yamllint enable rule:indentation
481 - builder:
482     name: set-functest-env-alpine
483     builders:
484       # yamllint disable rule:indentation
485       - shell:
486           !include-raw:
487               - ./functest-env-presetup.sh
488               - ../../utils/fetch_os_creds.sh
489
490 # yamllint enable rule:indentation
491 - builder:
492     name: functest-store-results
493     builders:
494       - shell:
495           !include-raw: ../../utils/push-test-logs.sh
496
497 - builder:
498     name: functest-cleanup
499     builders:
500       - shell:
501           !include-raw: ./functest-cleanup.sh
502
503 - builder:
504     name: functest-exit
505     builders:
506       - shell:
507           !include-raw: ./functest-exit.sh