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