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