4920bffea90b054dadc1c5d8ee92ff3014fe68a7
[releng.git] / jjb / functest / functest-ci-jobs.yml
1 ###################################
2 # job configuration for functest
3 ###################################
4 - project:
5     name: functest
6
7     project: '{name}'
8
9 #--------------------------------
10 # BRANCH ANCHORS
11 #--------------------------------
12     master: &master
13         stream: master
14         branch: '{stream}'
15         gs-pathname: ''
16         docker-tag: 'latest'
17     danube: &danube
18         stream: danube
19         branch: 'stable/{stream}'
20         gs-pathname: '/{stream}'
21         docker-tag: 'stable'
22 #--------------------------------
23 # POD, INSTALLER, AND BRANCH MAPPING
24 #--------------------------------
25 #    Installers using labels
26 #            CI PODs
27 # This section should only contain the installers
28 # that have been switched using labels for slaves
29 #--------------------------------
30     pod:
31 # fuel CI PODs
32         - baremetal:
33             slave-label: fuel-baremetal
34             installer: fuel
35             <<: *master
36         - virtual:
37             slave-label: fuel-virtual
38             installer: fuel
39             <<: *master
40         - baremetal:
41             slave-label: fuel-baremetal
42             installer: fuel
43             <<: *danube
44         - virtual:
45             slave-label: fuel-virtual
46             installer: fuel
47             <<: *danube
48 # joid CI PODs
49         - baremetal:
50             slave-label: joid-baremetal
51             installer: joid
52             <<: *master
53         - virtual:
54             slave-label: joid-virtual
55             installer: joid
56             <<: *master
57         - baremetal:
58             slave-label: joid-baremetal
59             installer: joid
60             <<: *danube
61         - virtual:
62             slave-label: joid-virtual
63             installer: joid
64             <<: *danube
65 # compass CI PODs
66         - baremetal:
67             slave-label: compass-baremetal
68             installer: compass
69             <<: *master
70         - virtual:
71             slave-label: compass-virtual
72             installer: compass
73             <<: *master
74         - baremetal:
75             slave-label: compass-baremetal
76             installer: compass
77             <<: *danube
78         - virtual:
79             slave-label: compass-virtual
80             installer: compass
81             <<: *danube
82 # apex CI PODs
83         - apex-verify-master:
84             slave-label: '{pod}'
85             installer: apex
86             <<: *master
87         - apex-daily-master:
88             slave-label: '{pod}'
89             installer: apex
90             <<: *master
91 #        - apex-verify-danube:
92 #            slave-label: '{pod}'
93 #            installer: apex
94 #            <<: *danube
95 #        - apex-daily-danube:
96 #            slave-label: '{pod}'
97 #            installer: apex
98 #            <<: *danube
99 # armband CI PODs
100         - armband-baremetal:
101             slave-label: armband-baremetal
102             installer: fuel
103             <<: *master
104         - armband-virtual:
105             slave-label: armband-virtual
106             installer: fuel
107             <<: *master
108         - armband-baremetal:
109             slave-label: armband-baremetal
110             installer: fuel
111             <<: *danube
112         - armband-virtual:
113             slave-label: armband-virtual
114             installer: fuel
115             <<: *danube
116 # netvirt 3rd party ci
117         - virtual:
118             slave-label: odl-netvirt-virtual
119             installer: netvirt
120             <<: *master
121 #--------------------------------
122 #        None-CI PODs
123 #--------------------------------
124         - orange-pod1:
125             slave-label: '{pod}'
126             installer: joid
127             <<: *master
128         - orange-pod5:
129             slave-label: '{pod}'
130             installer: fuel
131             <<: *master
132         - orange-pod2:
133             slave-label: '{pod}'
134             installer: joid
135             <<: *master
136         - huawei-pod5:
137             slave-label: '{pod}'
138             installer: compass
139             <<: *master
140         - nokia-pod1:
141             slave-label: '{pod}'
142             installer: apex
143             <<: *master
144         - arm-pod2:
145             slave-label: '{pod}'
146             installer: fuel
147             <<: *master
148         - arm-pod3:
149             slave-label: '{pod}'
150             installer: fuel
151             <<: *master
152         - zte-pod1:
153             slave-label: '{pod}'
154             installer: fuel
155             <<: *master
156         - zte-pod1:
157             slave-label: '{pod}'
158             installer: fuel
159             <<: *danube
160         - zte-pod2:
161             slave-label: '{pod}'
162             installer: fuel
163             <<: *master
164         - zte-pod3:
165             slave-label: '{pod}'
166             installer: fuel
167             <<: *master
168         - zte-pod3:
169             slave-label: '{pod}'
170             installer: fuel
171             <<: *danube
172         - arm-pod2:
173             slave-label: '{pod}'
174             installer: fuel
175             <<: *danube
176         - arm-pod3:
177             slave-label: '{pod}'
178             installer: fuel
179             <<: *danube
180 # PODs for verify jobs triggered by each patch upload
181         - ool-virtual1:
182             slave-label: '{pod}'
183             installer: apex
184             <<: *master
185 #--------------------------------
186
187     testsuite:
188         - 'suite':
189             job-timeout: 60
190         - 'daily':
191             job-timeout: 180
192         - 'weekly':
193             job-timeout: 400
194
195     jobs:
196         - 'functest-{installer}-{pod}-{testsuite}-{stream}'
197
198 ################################
199 # job template
200 ################################
201 - job-template:
202     name: 'functest-{installer}-{pod}-{testsuite}-{stream}'
203
204     concurrent: true
205
206     properties:
207         - throttle:
208             enabled: true
209             max-per-node: 1
210             option: 'project'
211
212     wrappers:
213         - build-name:
214             name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
215         - timeout:
216             timeout: '{job-timeout}'
217             abort: true
218
219     parameters:
220         - project-parameter:
221             project: '{project}'
222         - gerrit-parameter:
223             branch: '{branch}'
224         - '{installer}-defaults'
225         - '{slave-label}-defaults'
226         - 'functest-{testsuite}-parameter'
227         - string:
228             name: DEPLOY_SCENARIO
229             default: 'os-odl_l2-nofeature-ha'
230         - string:
231             name: DOCKER_TAG
232             default: '{docker-tag}'
233             description: 'Tag to pull docker image'
234         - string:
235             name: CLEAN_DOCKER_IMAGES
236             default: 'false'
237             description: 'Remove downloaded docker images (opnfv/functest:*)'
238         - functest-parameter:
239             gs-pathname: '{gs-pathname}'
240
241     scm:
242         - git-scm
243
244     builders:
245         - description-setter:
246             description: "POD: $NODE_NAME"
247         - 'functest-{testsuite}-builder'
248
249 ########################
250 # parameter macros
251 ########################
252 - parameter:
253     name: functest-daily-parameter
254     parameters:
255         - string:
256             name: FUNCTEST_SUITE_NAME
257             default: 'daily'
258             description: "Daily suite name to run"
259 - parameter:
260     name: functest-weekly-parameter
261     parameters:
262         - string:
263             name: FUNCTEST_SUITE_NAME
264             default: 'weekly'
265             description: "Weekly suite name to run"
266 - parameter:
267     name: functest-suite-parameter
268     parameters:
269         - choice:
270             name: FUNCTEST_SUITE_NAME
271             choices:
272                 - 'healthcheck'
273                 - 'vping_userdata'
274                 - 'vping_ssh'
275                 - 'tempest_smoke_serial'
276                 - 'rally_sanity'
277                 - 'odl'
278                 - 'onos'
279                 - 'promise'
280                 - 'doctor'
281                 - 'bgpvpn'
282                 - 'security_scan'
283                 - 'tempest_full_parallel'
284                 - 'rally_full'
285                 - 'vims'
286                 - 'multisite'
287                 - 'parser'
288         - string:
289             name: TESTCASE_OPTIONS
290             default: ''
291             description: 'Additional parameters specific to test case(s)'
292 - parameter:
293     name: functest-parameter
294     parameters:
295         - string:
296             name: GS_PATHNAME
297             default: '{gs-pathname}'
298             description: "Version directory where the opnfv documents will be stored in gs repository"
299         - string:
300             name: FUNCTEST_REPO_DIR
301             default: "/home/opnfv/repos/functest"
302             description: "Directory where the Functest repository is cloned"
303         - string:
304             name: PUSH_RESULTS_TO_DB
305             default: "true"
306             description: "Push the results of all the tests to the resultDB"
307         - string:
308             name: CI_DEBUG
309             default: 'false'
310             description: "Show debug output information"
311         - string:
312             name: RC_FILE_PATH
313             default: ''
314             description: "Path to the OS credentials file if given"
315 ########################
316 # trigger macros
317 ########################
318 - trigger:
319     name: 'functest-master'
320     triggers:
321         - pollscm:
322             cron: "H 9 * * *"
323 ########################
324 # builder macros
325 ########################
326 - builder:
327     name: functest-daily-builder
328     builders:
329         - 'functest-cleanup'
330         - 'set-functest-env'
331         - 'functest-daily'
332         - 'functest-store-results'
333         - 'functest-exit'
334
335 - builder:
336     name: functest-weekly-builder
337     builders:
338         - 'functest-cleanup'
339         - 'set-functest-env'
340         - 'functest-weekly'
341         - 'functest-store-results'
342         - 'functest-exit'
343
344 - builder:
345     name: functest-suite-builder
346     builders:
347         - 'functest-cleanup'
348         - 'set-functest-env'
349         - 'functest-suite'
350
351 - builder:
352     name: functest-daily
353     builders:
354         - shell:
355             !include-raw: ./functest-loop.sh
356
357 - builder:
358     name: functest-weekly
359     builders:
360         - shell:
361             !include-raw: ./functest-loop.sh
362
363 - builder:
364     name: functest-suite
365     builders:
366         - shell:
367             !include-raw: ./functest-suite.sh
368
369 - builder:
370     name: set-functest-env
371     builders:
372         - shell:
373             !include-raw: ./set-functest-env.sh
374
375 - builder:
376     name: functest-store-results
377     builders:
378         - shell:
379             !include-raw: ../../utils/push-test-logs.sh
380
381 - builder:
382     name: functest-cleanup
383     builders:
384         - shell:
385             !include-raw: ./functest-cleanup.sh
386
387 - builder:
388     name: functest-exit
389     builders:
390         - shell:
391             !include-raw: ./functest-exit.sh