568cb9b9d1d1a4f9747c9a10ee711b56efaffac6
[releng.git] / jjb / armband / armband-ci-jobs.yaml
1 ---
2 # jenkins job templates for Armband
3 - project:
4     name: 'armband-ci'
5     project: 'armband'
6
7     # -------------------------------
8     # BRANCH ANCHORS
9     # -------------------------------
10     master: &master
11       stream: master
12       branch: '{stream}'
13       gs-pathname: ''
14       disabled: false
15       functest_docker_tag: hunter
16     fraser: &fraser
17       stream: fraser
18       branch: 'stable/{stream}'
19       disabled: false
20       gs-pathname: '/{stream}'
21       functest_docker_tag: '{stream}'
22     gambia: &gambia
23       stream: gambia
24       branch: 'stable/{stream}'
25       gs-pathname: '/{stream}'
26       disabled: false
27       functest_docker_tag: '{stream}'
28     # -------------------------------
29     # DEPLOY TYPE ANCHORS
30     # -------------------------------
31     baremetal: &baremetal
32       installer: 'fuel'
33       deploy-type: 'baremetal'
34       slave-label: 'armband-{deploy-type}'
35     virtual: &virtual
36       installer: 'fuel'
37       deploy-type: 'virtual'
38       slave-label: 'armband-{deploy-type}'
39     # -------------------------------
40     # POD, INSTALLER, AND BRANCH MAPPING
41     # -------------------------------
42     # CI POD's
43     # -------------------------------
44     # yamllint disable rule:key-duplicates
45     pod:
46       # -------------------------------
47       #        fraser
48       # -------------------------------
49       - armband-baremetal:
50           <<: *baremetal
51           <<: *fraser
52       # -------------------------------
53       #        gambia
54       # -------------------------------
55       - armband-baremetal:
56           <<: *baremetal
57           <<: *gambia
58       - armband-virtual:
59           <<: *virtual
60           <<: *gambia
61       # -------------------------------
62       #        master
63       # -------------------------------
64       - armband-baremetal:
65           <<: *baremetal
66           <<: *master
67       - armband-virtual:
68           <<: *virtual
69           <<: *master
70     # yamllint enable rule:key-duplicates
71     # -------------------------------
72     #       scenarios
73     # -------------------------------
74     scenario:
75       # HA scenarios
76       - 'os-nosdn-nofeature-ha':
77           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
78       - 'os-odl-nofeature-ha':
79           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
80       - 'os-ovn-nofeature-ha':
81           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
82       - 'os-nosdn-ovs-ha':
83           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
84
85       # NOHA scenarios
86       - 'os-nosdn-nofeature-noha':
87           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
88       - 'os-nosdn-fdio-noha':
89           auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
90
91     exclude:
92       # Dovetail (and only it) should run against Fraser HA baremetal scenarios
93       - scenario: os-nosdn-nofeature-noha
94         stream: fraser
95       - scenario: os-ovn-nofeature-ha
96         stream: fraser
97       - scenario: os-nosdn-fdio-noha
98         stream: fraser
99
100     jobs:
101       - '{installer}-{scenario}-{pod}-daily-{stream}'
102       - '{installer}-deploy-{pod}-daily-{stream}'
103
104 ########################
105 # job templates
106 ########################
107 - job-template:
108     name: '{installer}-{scenario}-{pod}-daily-{stream}'
109
110     disabled: '{obj:disabled}'
111
112     concurrent: false
113
114     properties:
115       - logrotate-default
116       - throttle:
117           enabled: true
118           max-total: 4
119           max-per-node: 1
120           option: 'project'
121       - build-blocker:
122           use-build-blocker: true
123           blocking-jobs:
124             - '{installer}-os-.*?-{pod}-daily-.*'
125             - 'armband-verify-.*'
126           blocking-level: 'NODE'
127
128     wrappers:
129       - build-name:
130           name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
131
132     triggers:
133       - '{auto-trigger-name}'
134
135     parameters:
136       - project-parameter:
137           project: '{project}'
138           branch: '{branch}'
139       - '{installer}-defaults':
140           gs-pathname: '{gs-pathname}'
141       - '{slave-label}-defaults':
142           installer: '{installer}'
143       - string:
144           name: DEPLOY_SCENARIO
145           default: '{scenario}'
146
147     builders:
148       - trigger-builds:
149           - project: '{installer}-deploy-{pod}-daily-{stream}'
150             current-parameters: false
151             predefined-parameters: |
152               DEPLOY_SCENARIO={scenario}
153               INSTALLER_VERSION={stream}
154             same-node: true
155             block: true
156       - conditional-step:
157           condition-kind: not
158           condition-operand:
159             condition-kind: regex-match
160             regex: 'fraser'
161             label: '{stream}'
162           steps:
163             - trigger-builds:
164                 - project: 'functest-{installer}-{pod}-daily-{stream}'
165                   current-parameters: false
166                   predefined-parameters: |
167                     DEPLOY_SCENARIO={scenario}
168                     INSTALLER_VERSION={stream}
169                     DOCKER_TAG={functest_docker_tag}
170                   same-node: true
171                   block: true
172                   block-thresholds:
173                     build-step-failure-threshold: 'never'
174                     failure-threshold: 'never'
175                     unstable-threshold: 'FAILURE'
176       - conditional-step:
177           condition-kind: not
178           condition-operand:
179             condition-kind: regex-match
180             regex: 'fraser'
181             label: '{stream}'
182           steps:
183             - trigger-builds:
184                 - project: 'yardstick-{installer}-{pod}-daily-{stream}'
185                   current-parameters: false
186                   predefined-parameters: |
187                     DEPLOY_SCENARIO={scenario}
188                     INSTALLER_VERSION={stream}
189                   block: true
190                   same-node: true
191                   block-thresholds:
192                     build-step-failure-threshold: 'never'
193                     failure-threshold: 'never'
194                     unstable-threshold: 'FAILURE'
195       # 1.here the stream means the SUT stream, dovetail stream is defined in its own job
196       # 2.testsuite proposed_tests here is for new test cases planning to add into OVP
197       # 3.run proposed_tests on Monday, Wednesday and Friday against ha scenario
198       # 4.testsuite default here is for the test cases already added into OVP
199       # 5.run default testsuite on Tuesday against ha scenario
200       # 6.not used for release criteria or compliance,
201       #   only to debug the dovetail tool bugs with arm pods
202       - conditional-step:
203           condition-kind: and
204           condition-operands:
205             - condition-kind: regex-match
206               regex: '.*-ha'
207               label: '{scenario}'
208             - condition-kind: regex-match
209               regex: 'fraser'
210               label: '{stream}'
211           steps:
212             - trigger-builds:
213                 - project: 'dovetail-{installer}-{pod}-proposed_tests-{stream}'
214                   current-parameters: false
215                   predefined-parameters: |
216                     DEPLOY_SCENARIO={scenario}
217                     INSTALLER_VERSION={stream}
218                   block: true
219                   same-node: true
220                   block-thresholds:
221                     build-step-failure-threshold: 'never'
222                     failure-threshold: 'never'
223                     unstable-threshold: 'FAILURE'
224       - conditional-step:
225           condition-kind: and
226           condition-operands:
227             - condition-kind: regex-match
228               regex: '.*-ha'
229               label: '{scenario}'
230             - condition-kind: regex-match
231               regex: 'fraser'
232               label: '{stream}'
233           steps:
234             - trigger-builds:
235                 - project: 'dovetail-{installer}-{pod}-default-{stream}'
236                   current-parameters: false
237                   predefined-parameters: |
238                     DEPLOY_SCENARIO={scenario}
239                     INSTALLER_VERSION={stream}
240                   block: true
241                   same-node: true
242                   block-thresholds:
243                     build-step-failure-threshold: 'never'
244                     failure-threshold: 'never'
245                     unstable-threshold: 'FAILURE'
246       # Armband uses Fuel's log collection project job, no need to duplicate
247       - trigger-builds:
248           - project: 'fuel-collect-logs-{deploy-type}-daily-{stream}'
249             current-parameters: false
250             predefined-parameters: |
251               DEPLOY_SCENARIO={scenario}
252               INSTALLER_VERSION={stream}
253             block: true
254             same-node: true
255             block-thresholds:
256               build-step-failure-threshold: 'never'
257               failure-threshold: 'never'
258               unstable-threshold: 'FAILURE'
259
260 - job-template:
261     name: '{installer}-deploy-{pod}-daily-{stream}'
262
263     concurrent: true
264
265     properties:
266       - logrotate-default
267       - throttle:
268           enabled: true
269           max-total: 4
270           max-per-node: 1
271           option: 'project'
272       - build-blocker:
273           use-build-blocker: true
274           blocking-jobs:
275             - '{installer}-deploy-{pod}-daily-{stream}'
276             - '{installer}-deploy-generic-daily-.*'
277           blocking-level: 'NODE'
278
279     parameters:
280       - project-parameter:
281           project: '{project}'
282           branch: '{branch}'
283       - '{installer}-defaults':
284           gs-pathname: '{gs-pathname}'
285       - '{slave-label}-defaults':
286           installer: '{installer}'
287       - testapi-parameter
288       - string:
289           name: DEPLOY_SCENARIO
290           default: 'os-odl-nofeature-ha'
291       - string:
292           name: PROJECT
293           default: '{project}'
294
295     scm:
296       - git-scm
297
298     wrappers:
299       - build-name:
300           name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
301
302     builders:
303       - track-begin-timestamp
304       - shell:
305           !include-raw-escape: ../fuel/fuel-deploy.sh
306
307     publishers:
308       - email:
309           recipients: armband@enea.com
310       - email-jenkins-admins-on-failure
311       - report-provision-result
312
313 ########################
314 # trigger macros
315 ########################
316 # CI PODs
317 # ----------------------------------------------------------------
318 # Enea Armband CI Baremetal Triggers running against master branch
319 # ----------------------------------------------------------------
320 - trigger:
321     name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-master-trigger'
322     triggers:
323       - timed: '0 1 * * 7'
324 - trigger:
325     name: 'fuel-os-odl-nofeature-ha-armband-baremetal-master-trigger'
326     triggers:
327       - timed: '0 1 * * 4,6'
328 - trigger:
329     name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-master-trigger'
330     triggers:
331       - timed: '0 1 * * 2'
332 - trigger:
333     name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-master-trigger'
334     triggers:
335       - timed: '0 1 * * 1'
336 - trigger:
337     name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-master-trigger'
338     triggers:
339       - timed: ''
340 - trigger:
341     name: 'fuel-os-nosdn-fdio-noha-armband-baremetal-master-trigger'
342     triggers:
343       - timed: '0 1 * * 3,5'
344 # ---------------------------------------------------------------------
345 # Enea Armband CI Baremetal Triggers running against gambia branch
346 # ---------------------------------------------------------------------
347 - trigger:
348     name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-gambia-trigger'
349     triggers:
350       - timed: '10 1 * * 1'
351 - trigger:
352     name: 'fuel-os-odl-nofeature-ha-armband-baremetal-gambia-trigger'
353     triggers:
354       - timed: '10 1 * * 7'
355 - trigger:
356     name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-gambia-trigger'
357     triggers:
358       - timed: '10 1 * * 2'
359 - trigger:
360     name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-gambia-trigger'
361     triggers:
362       - timed: '10 1 * * 4,6'
363 - trigger:
364     name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-gambia-trigger'
365     triggers:
366       - timed: ''
367 - trigger:
368     name: 'fuel-os-nosdn-fdio-noha-armband-baremetal-gambia-trigger'
369     triggers:
370       - timed: '10 1 * * 3,5'
371 # -------------------------------------------------------------------
372 # Enea Armband CI Baremetal Triggers running against fraser branch (for Dovetail)
373 # -------------------------------------------------------------------
374 - trigger:
375     name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-fraser-trigger'
376     triggers:
377       - timed: '5 13 * * 6,7'
378 - trigger:
379     name: 'fuel-os-odl-nofeature-ha-armband-baremetal-fraser-trigger'
380     triggers:
381       - timed: '0 13 * * 6'
382 - trigger:
383     name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-fraser-trigger'
384     triggers:
385       - timed: '0 13 * * 7'
386 # --------------------------------------------------------------
387 # Enea Armband CI Virtual Triggers running against master branch
388 # --------------------------------------------------------------
389 - trigger:
390     name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-master-trigger'
391     triggers:
392       - timed: ''
393 - trigger:
394     name: 'fuel-os-odl-nofeature-ha-armband-virtual-master-trigger'
395     triggers:
396       - timed: ''
397 - trigger:
398     name: 'fuel-os-ovn-nofeature-ha-armband-virtual-master-trigger'
399     triggers:
400       - timed: ''
401 - trigger:
402     name: 'fuel-os-nosdn-ovs-ha-armband-virtual-master-trigger'
403     triggers:
404       - timed: ''
405 - trigger:
406     name: 'fuel-os-nosdn-nofeature-noha-armband-virtual-master-trigger'
407     triggers:
408       - timed: ''
409 - trigger:
410     name: 'fuel-os-nosdn-fdio-noha-armband-virtual-master-trigger'
411     triggers:
412       - timed: ''
413 # -------------------------------------------------------------------
414 # Enea Armband CI Virtual Triggers running against gambia branch
415 # -------------------------------------------------------------------
416 - trigger:
417     name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-gambia-trigger'
418     triggers:
419       - timed: ''
420 - trigger:
421     name: 'fuel-os-odl-nofeature-ha-armband-virtual-gambia-trigger'
422     triggers:
423       - timed: ''
424 - trigger:
425     name: 'fuel-os-ovn-nofeature-ha-armband-virtual-gambia-trigger'
426     triggers:
427       - timed: ''
428 - trigger:
429     name: 'fuel-os-nosdn-ovs-ha-armband-virtual-gambia-trigger'
430     triggers:
431       - timed: ''
432 - trigger:
433     name: 'fuel-os-nosdn-nofeature-noha-armband-virtual-gambia-trigger'
434     triggers:
435       - timed: ''
436 - trigger:
437     name: 'fuel-os-nosdn-fdio-noha-armband-virtual-gambia-trigger'
438     triggers:
439       - timed: ''