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