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