Update Functest job to use Docker
[releng.git] / jjb / functest / functest.yml
1 ###################################
2 # job configuration for functest
3 ###################################
4 - project:
5     name: functest
6
7     installer:
8         - fuel:
9             node: 'opnfv-jump-2'
10             installer_type: 'fuel'
11             installer_ip: '10.20.0.2'
12             functest_repo_dir:  '/home/opnfv/repos/functest'
13         - foreman:
14             node: 'opnfv-jump-2'
15             installer_type: 'foreman'
16             installer_ip: '172.30.10.73'
17             functest_repo_dir:  '/home/opnfv/repos/functest'
18     pod:
19         - orange-build:
20             node: 'orange-build'
21             installer_type: 'foreman'
22             installer_ip: '172.30.10.73'
23             functest_repo_dir:  '/home/opnfv/repos/functest'
24
25     jobs:
26         - 'set-functest-env-{pod}'
27         - 'functest-{pod}'
28         - 'clean-functest-env-{pod}'
29         - 'set-functest-env-{installer}-{stream}'
30         - 'functest-{installer}-{stream}'
31         - 'clean-functest-env-{installer}-{stream}'
32         - 'functest-openstack-bench-test-{pod}'
33         - 'functest-openstack-tempest-smoke-test-{pod}'
34         - 'functest-odl-test-{pod}'
35         - 'functest-vims-{installer}-{stream}'
36         - 'functest-vping-test-{pod}'
37         - 'functest-daily-{stream}'
38         - 'functest-merge-{stream}'
39         - 'functest-verify-{stream}'
40
41     # stream:    branch with - in place of / (eg. stable-arno)
42     # branch:    branch (eg. stable/arno)
43     stream:
44         - master:
45             branch: 'master'
46             gs-pathname: ''
47         - stable-arno:
48             branch: 'stable/arno'
49             gs-pathname: '/arno'
50
51     project: 'functest'
52     somevar: 'foo'
53 ################################
54 # job template
55 ################################
56 - job-template:
57     name: set-functest-env-{pod}
58
59     project-type: freestyle
60
61     node: '{pod}'
62
63     logrotate:
64         daysToKeep: 30
65         numToKeep: 10
66         artifactDaysToKeep: -1
67         artifactNumToKeep: -1
68
69     builders:
70         - 'set-functest-env'
71
72
73
74 - job-template:
75     name: clean-functest-env-{pod}
76
77     project-type: freestyle
78
79     node: '{pod}'
80
81     logrotate:
82         daysToKeep: 30
83         numToKeep: 10
84         artifactDaysToKeep: -1
85         artifactNumToKeep: -1
86
87     builders:
88         - 'functest-cleanup'
89
90
91 - job-template:
92     name: set-functest-env-{installer}-{stream}
93
94     project-type: freestyle
95
96     node: '{node}'
97
98     logrotate:
99         daysToKeep: 30
100         numToKeep: 10
101         artifactDaysToKeep: -1
102         artifactNumToKeep: -1
103
104     builders:
105         - 'set-functest-env'
106
107
108 - job-template:
109     name: clean-functest-env-{installer}-{stream}
110
111     project-type: freestyle
112
113     node: '{node}'
114
115     logrotate:
116         daysToKeep: 30
117         numToKeep: 10
118         artifactDaysToKeep: -1
119         artifactNumToKeep: -1
120
121     builders:
122         - 'functest-cleanup'
123
124 - job-template:
125     name: functest-openstack-bench-test-{pod}
126
127     project-type: freestyle
128
129     node: '{pod}'
130
131     logrotate:
132         daysToKeep: 30
133         numToKeep: 10
134         artifactDaysToKeep: -1
135         artifactNumToKeep: -1
136
137     builders:
138         - 'functest-rally-bench'
139
140
141 - job-template:
142     name: functest-openstack-tempest-smoke-test-{pod}
143
144     project-type: freestyle
145
146     node: '{pod}'
147
148     logrotate:
149         daysToKeep: 30
150         numToKeep: 10
151         artifactDaysToKeep: -1
152         artifactNumToKeep: -1
153
154     builders:
155         - 'functest-tempest-smoke'
156
157 - job-template:
158     name: functest-odl-test-{pod}
159
160     project-type: freestyle
161
162     node: '{pod}'
163
164     logrotate:
165         daysToKeep: 30
166         numToKeep: 10
167         artifactDaysToKeep: -1
168         artifactNumToKeep: -1
169
170     builders:
171         - shell: |
172         - 'functest-odl'
173
174
175 - job-template:
176     name: functest-vping-test-{pod}
177
178     project-type: freestyle
179
180     node: '{pod}'
181
182     logrotate:
183         daysToKeep: 30
184         numToKeep: 10
185         artifactDaysToKeep: -1
186         artifactNumToKeep: -1
187
188     builders:
189         - 'functest-vping'
190
191
192 - job-template:
193     name: functest-{pod}
194
195     project-type: freestyle
196
197     node: '{pod}'
198
199     parameters:
200         - project-parameter:
201             project: '{project}'
202         - string:
203             name: INSTALLER_TYPE
204             default: '{installer_type}'
205             description: "Installer name that is used for deployment."
206         - string:
207             name: INSTALLER_IP
208             default: '{installer_ip}'
209             description: "Installer IP."
210         - string:
211             name: FUNCTEST_REPO_DIR
212             default: '{functest_repo_dir}'
213             description: "Directory where the root functest repo is cloned in the docker."
214         - '{pod}'
215
216     scm:
217         - git-scm:
218             credentials-id: '{ssh-credentials}'
219             refspec: ''
220             branch: master
221
222     logrotate:
223         daysToKeep: 30
224         numToKeep: 10
225         artifactDaysToKeep: -1
226         artifactNumToKeep: -1
227
228     builders:
229         - 'functest-all'
230         - 'functest-store-results'
231         - 'functest-cleanup'
232
233 - job-template:
234     name: functest-{installer}-{stream}
235
236     project-type: freestyle
237
238     node: '{node}'
239
240     parameters:
241         - project-parameter:
242             project: '{project}'
243         - string:
244             name: INSTALLER_TYPE
245             default: '{installer_type}'
246             description: "Installer name that is used for deployment."
247         - string:
248             name: INSTALLER_IP
249             default: '{installer_ip}'
250             description: "Installer IP."
251         - string:
252             name: FUNCTEST_REPO_DIR
253             default: '{functest_repo_dir}'
254             description: "Directory where the root functest repo is cloned in the docker."
255         - string:
256             name: GIT_BASE
257             default: ssh://gerrit.opnfv.org:29418/$PROJECT
258             description: "Override GIT_BASE"
259
260     scm:
261         - git-scm:
262             credentials-id: '{ssh-credentials}'
263             refspec: ''
264             branch: master
265
266     logrotate:
267         daysToKeep: 30
268         numToKeep: 10
269         artifactDaysToKeep: -1
270         artifactNumToKeep: -1
271
272     builders:
273         - 'functest-all'
274         - 'functest-store-results'
275         - 'functest-cleanup'
276
277 - job-template:
278     name: functest-vims-{installer}-{stream}
279
280     project-type: freestyle
281
282     node: '{node}'
283
284     parameters:
285         - project-parameter:
286             project: '{project}'
287         - string:
288             name: INSTALLER_TYPE
289             default: '{installer_type}'
290             description: "Installer name that is used for deployment."
291         - string:
292             name: INSTALLER_IP
293             default: '{installer_ip}'
294             description: "Installer IP."
295         - string:
296             name: FUNCTEST_REPO_DIR
297             default: '{functest_repo_dir}'
298             description: "Directory where the root functest repo is cloned in the docker."
299         - string:
300             name: GIT_BASE
301             default: ssh://gerrit.opnfv.org:29418/$PROJECT
302             description: "Override GIT_BASE"
303
304     scm:
305         - git-scm:
306             credentials-id: '{ssh-credentials}'
307             refspec: ''
308             branch: master
309
310     logrotate:
311         daysToKeep: 30
312         numToKeep: 10
313         artifactDaysToKeep: -1
314         artifactNumToKeep: -1
315
316     builders:
317         - 'functest-vims'
318
319 - job-template:
320     name: 'functest-daily-{stream}'
321
322     node: master
323
324     # Job template for daily builders
325     #
326     # Required Variables:
327     #     stream:    branch with - in place of / (eg. stable)
328     #     branch:    branch (eg. stable)
329
330     project-type: freestyle
331     varsetabove: '{somevar}'
332
333     logrotate:
334         daysToKeep: '{build-days-to-keep}'
335         numToKeep: '{build-num-to-keep}'
336         artifactDaysToKeep: '{build-artifact-days-to-keep}'
337         artifactNumToKeep: '{build-artifact-num-to-keep}'
338
339     parameters:
340         - project-parameter:
341             project: '{project}'
342         - functest-parameter:
343             gs-pathname: '{gs-pathname}'
344
345     scm:
346         - git-scm:
347             credentials-id: '{ssh-credentials}'
348             refspec: ''
349             branch: '{stream}'
350
351     wrappers:
352         - ssh-agent-credentials:
353             user: '{ssh-credentials}'
354
355     triggers:
356         - 'functest-{stream}'
357
358     prebuilders:
359         - test-macro
360
361     builders:
362         - shell:
363             !include-raw ../opnfvdocs/docu-build.sh
364
365     postbuilders:
366         - test-macro
367
368 - job-template:
369     name: 'functest-verify-{stream}'
370
371     node: master
372
373     project-type: freestyle
374
375     logrotate:
376         daysToKeep: 30
377         numToKeep: 10
378         artifactDaysToKeep: -1
379         artifactNumToKeep: -1
380
381     parameters:
382         - project-parameter:
383             project: '{project}'
384         - gerrit-parameter:
385             branch: '{branch}'
386     scm:
387         - gerrit-trigger-scm:
388             credentials-id: '{ssh-credentials}'
389             refspec: '$GERRIT_REFSPEC'
390             choosing-strategy: 'gerrit'
391
392     wrappers:
393         - ssh-agent-credentials:
394             user: '{ssh-credentials}'
395
396     triggers:
397         - gerrit:
398             trigger-on:
399                 - patchset-created-event:
400                     exclude-drafts: 'false'
401                     exclude-trivial-rebase: 'false'
402                     exclude-no-code-change: 'false'
403                 - draft-published-event
404                 - comment-added-contains-event:
405                     comment-contains-value: 'recheck'
406                 - comment-added-contains-event:
407                     comment-contains-value: 'reverify'
408             projects:
409               - project-compare-type: 'ANT'
410                 project-pattern: 'functest'
411                 branches:
412                   - branch-compare-type: 'ANT'
413                     branch-pattern: '**/{branch}'
414
415     builders:
416         - shell:
417             !include-raw ../opnfvdocs/docu-build.sh
418
419 - job-template:
420     name: 'functest-merge-{stream}'
421
422     node: master
423
424     # builder-merge job to run JJB update
425     #
426     # This job's purpose is to update all the JJB
427
428     project-type: freestyle
429
430     logrotate:
431         daysToKeep: 30
432         numToKeep: 40
433         artifactDaysToKeep: -1
434         artifactNumToKeep: 5
435
436     parameters:
437         - project-parameter:
438             project: '{project}'
439         - gerrit-parameter:
440             branch: '{branch}'
441
442     scm:
443         - gerrit-trigger-scm:
444             credentials-id: '{ssh-credentials}'
445             refspec: ''
446             choosing-strategy: 'default'
447
448     wrappers:
449         - ssh-agent-credentials:
450             user: '{ssh-credentials}'
451
452     triggers:
453         - gerrit:
454             trigger-on:
455                 - change-merged-event
456                 - comment-added-contains-event:
457                     comment-contains-value: 'remerge'
458             projects:
459               - project-compare-type: 'ANT'
460                 project-pattern: 'functest'
461                 branches:
462                     - branch-compare-type: 'ANT'
463                       branch-pattern: '**/{branch}'
464
465     builders:
466         - shell:
467             !include-raw ../opnfvdocs/docu-build.sh
468
469 ########################
470 # parameter macros
471 ########################
472 - parameter:
473     name: functest-parameter
474     parameters:
475         - string:
476             name: GS_PATHNAME
477             default: '{gs-pathname}'
478             description: "Version directory where the opnfv documents will be stored in gs repository"
479
480 - parameter:
481     name: orange-build
482     parameters:
483         - string:
484             name: GIT_BASE
485             default: https://gerrit.opnfv.org/gerrit/$PROJECT
486             description: "Override GIT_BASE"
487
488 - parameter:
489     name: opnfv-jump-1
490     parameters:
491         - string:
492             name: GIT_BASE
493             default: ssh://gerrit.opnfv.org:29418/$PROJECT
494             description: "Override GIT_BASE"
495
496 - parameter:
497     name: opnfv-jump-2
498     parameters:
499         - string:
500             name: GIT_BASE
501             default: ssh://gerrit.opnfv.org:29418/$PROJECT
502             description: "Override GIT_BASE"
503 ########################
504 # trigger macros
505 ########################
506 - trigger:
507     name: 'functest-master'
508     triggers:
509         - pollscm: "H 9 * * *"
510
511 - trigger:
512     name: 'functest-stable-arno'
513     triggers:
514         - pollscm: "H 21 * * *"
515
516 ########################
517 # builder macros
518 ########################
519 # macros
520 - builder:
521     name: functest-all
522     builders:
523         - shell: |
524             #!/bin/bash
525             set +e
526
527             # Remove any docker containers leftovers
528             $ docker ps | grep opnfv/functest | awk '{print $1}' | xargs docker stop &>/dev/null
529             $ docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm &>/dev/null
530             $ docker images | grep opnfv/functest | awk '{print $3}' | xargs docker rmi &>/dev/null
531
532             # Pull and store fresh image from Dockerhub
533             $ docker pull opnfv/functest
534
535             # Run Docker and Functest tests
536             cmd="${FUNCTEST_REPO_DIR}/docker/start.sh"
537             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
538                 -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
539
540
541 - builder:
542     name: set-functest-env
543     builders:
544         - shell: |
545             #!/bin/bash
546             set +e
547
548             echo "Functest: spawn Docker and run Functest suite"
549             cmd="${FUNCTEST_REPO_DIR}/docker/start.sh"
550             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
551             -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
552
553
554 - builder:
555     name: functest-vping
556     builders:
557         - shell: |
558             #!/bin/bash
559             set +e
560
561             echo "Functest: run vPing"
562             cmd="python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing.py \
563                 --debug ${FUNCTEST_REPO_DIR}/ -r"
564             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
565                 -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
566
567 - builder:
568     name: functest-odl
569     builders:
570         - shell: |
571             #!/bin/bash
572             set +e
573
574             echo "Functest: run ODL suite"
575             cmd="${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh"
576             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
577                 -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
578
579 - builder:
580     name: functest-tempest-smoke
581     builders:
582         - shell: |
583             #!/bin/bash
584             set +e
585
586             # tempest
587             echo "Functest: run Tempest suite"
588             cmd="rally verify start smoke; rally verify list;"
589             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
590                 -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
591
592
593
594 - builder:
595     name: functest-rally-bench
596     builders:
597         - shell: |
598             #!/bin/bash
599             set +e
600
601             echo "Functest: run Functest Rally Bench suites"
602             cmd="python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally.py \
603                 --debug ${FUNCTEST_REPO_DIR}/ all"
604             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
605                 -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
606
607
608 - builder:
609     name: functest-vims
610     builders:
611         - shell: |
612             #!/bin/bash
613             set +e
614             cmd="python ${FUNCTEST_REPO_DIR}/testcases/vIMS/CI/vIMS.py \
615                 --debug ${FUNCTEST_REPO_DIR}/"
616             docker run -t -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
617                 -e "INSTALLER_IP=${INSTALLER_IP}" opnfv/functest $cmd
618
619
620
621 - builder:
622     name: functest-store-results
623     builders:
624         - shell:
625             !include-raw res-build.sh
626
627 - builder:
628     name: functest-cleanup
629     builders:
630         - shell: |
631             #!/bin/bash
632             set +e
633
634             # cleanup: remove any docker containers leftovers
635             $ docker ps | grep opnfv/functest | awk '{print $1}' | xargs docker stop &>/dev/null
636             $ docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm &>/dev/null
637             $ docker images | grep opnfv/functest | awk '{print $3}' | xargs docker rmi &>/dev/null
638