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