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