Correct description of functest jjob from public key to private
[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     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         - huawei-build:
41             node: 'huawei-us-deploy-bare-1'
42             installer_type: 'compass'
43             installer_ip: '192.168.200.2'
44
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: '{pod}'
81
82     builders:
83         - 'set-functest-env'
84
85 - job-template:
86     name: clean-functest-env-{pod}
87
88     node: '{pod}'
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: '{pod}'
113
114     builders:
115         - 'functest-rally-bench'
116
117 - job-template:
118     name: functest-openstack-tempest-smoke-test-{pod}
119
120     node: '{pod}'
121
122     builders:
123         - 'functest-tempest-smoke'
124
125 - job-template:
126     name: functest-odl-test-{pod}
127
128     node: '{pod}'
129
130     builders:
131         - shell: |
132         - 'functest-odl'
133
134 - job-template:
135     name: functest-vping-test-{pod}
136
137     node: '{pod}'
138
139     builders:
140         - 'functest-vping'
141
142 - job-template:
143     name: functest-{pod}
144
145     node: '{pod}'
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             !include-raw ../opnfvdocs/docu-build.sh
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         - string:
390             name: SSH_KEY
391             default: "/root/.ssh/id_rsa"
392             description: "SSH private key to access the installer VM"
393
394 - parameter:
395     name: huawei-build
396     parameters:
397         - string:
398             name: GIT_BASE
399             default: ssh://gerrit.opnfv.org:29418/$PROJECT
400             description: "Override GIT_BASE"
401
402 - parameter:
403     name: opnfv-jump-2
404     parameters:
405         - string:
406             name: GIT_BASE
407             default: ssh://gerrit.opnfv.org:29418/$PROJECT
408             description: "Override GIT_BASE"
409 ########################
410 # trigger macros
411 ########################
412 - trigger:
413     name: 'functest-master'
414     triggers:
415         - pollscm: "H 9 * * *"
416
417 - trigger:
418     name: 'functest-stable-arno'
419     triggers:
420         - pollscm: "H 21 * * *"
421
422 ########################
423 # builder macros
424 ########################
425 # macros
426 - builder:
427     name: functest-all
428     builders:
429         - shell: |
430             #!/bin/bash
431             set +e
432
433             echo "Functest: running all the tests"
434             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh"
435             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
436             docker exec $container_id $cmd
437
438 - builder:
439     name: set-functest-env
440     builders:
441         - shell: |
442             #!/bin/bash
443             set +e
444             if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
445                 INSTALLER_IP=$(cat instack /var/lib/libvirt/dnsmasq/default.leases \
446                     |sed 's/.*192/192/g' | sed 's/\ in.*//g')
447             fi
448             echo "Functest: Start Docker and prepare environment"
449             envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} -e NODE_NAME=${NODE_NAME}"
450             labconfig=""
451             # If production lab then creds may be retrieved dynamically
452             # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
453             if [ -n "${LAB_CONFIG}" ]; then
454                 labconfig="-v ${LAB_CONFIG}:/home/opnfv/functest/conf/openstack.creds"
455             fi
456             if [ -n "${SSH_KEY}" ]; then
457                 sshkey="-v ${SSH_KEY}:/root/.ssh/id_rsa"
458             fi
459
460             docker pull opnfv/functest:latest_stable
461             cmd="docker run -id -e $envs ${labconfig} ${sshkey} opnfv/functest:latest_stable /bin/bash"
462             echo "Functest: Running docker run command: ${cmd}"
463             ${cmd}
464             docker ps -a
465             sleep 5
466             container_id=$(docker ps | grep 'opnfv/functest:latest_stable' | awk '{print $1}' | head -1)
467             echo "Container ID=${container_id}"
468             if [ -z ${container_id} ]; then
469                 echo "Cannot find opnfv/functest container ID ${container_id}. Please check if it is existing."
470                 docker ps -a
471                 exit 1
472             fi
473             echo "Starting the container: docker start ${container_id}"
474             docker start ${container_id}
475             sleep 5
476             docker ps
477             if [ $(docker ps | grep 'opnfv/functest:latest_stable' | wc -l) == 0 ]; then
478                 echo "The container opnfv/functest with ID=${container_id} has not been properly started. Exiting..."
479                 exit 1
480             fi
481             cmd="${FUNCTEST_REPO_DIR}/docker/prepare_env.sh"
482             echo "Executing command inside the docker: ${cmd}"
483             docker exec ${container_id} ${cmd}
484
485 - builder:
486     name: functest-vping
487     builders:
488         - shell: |
489             #!/bin/bash
490             set +e
491
492             echo "Functest: run vPing"
493             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test vping"
494             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
495             docker exec $container_id $cmd
496
497 - builder:
498     name: functest-odl
499     builders:
500         - shell: |
501             #!/bin/bash
502             set +e
503
504             echo "Functest: run ODL suite"
505             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test odl"
506             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
507             docker exec $container_id $cmd
508
509 - builder:
510     name: functest-tempest-smoke
511     builders:
512         - shell: |
513             #!/bin/bash
514             set +e
515
516             # tempest
517             echo "Functest: run Tempest suite"
518             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test tempest"
519             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
520             docker exec $container_id $cmd
521
522 - builder:
523     name: functest-rally-bench
524     builders:
525         - shell: |
526             #!/bin/bash
527             set +e
528
529             echo "Functest: run Functest Rally Bench suites"
530             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test rally"
531             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
532             docker exec $container_id $cmd
533
534 - builder:
535     name: functest-vims
536     builders:
537         - shell: |
538             #!/bin/bash
539             set +e
540
541             echo "Functest: run Functest vIMS test"
542             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test vims"
543             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
544             docker exec $container_id $cmd
545
546 - builder:
547     name: functest-store-results
548     builders:
549         - shell:
550             !include-raw res-build.sh
551
552 - builder:
553     name: functest-cleanup
554     builders:
555         - shell: |
556             #!/bin/bash
557
558             echo "Cleaning up docker containers/images..."
559
560             # Remove previous running containers if exist
561             if [[ ! -z $(docker ps -a | grep opnfv/functest) ]]; then
562                 echo "Removing existing opnfv/functest containers..."
563                 docker ps | grep opnfv/functest | awk '{print $1}' | xargs docker stop
564                 docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm
565             fi
566
567             # Remove existing images if exist
568             if [[ ! -z $(docker images | grep opnfv/functest) ]]; then
569                 echo "Docker images to remove:"
570                 docker images | head -1 && docker images | grep opnfv/functest
571                 image_tags=($(docker images | grep opnfv/functest | awk '{print $2}'))
572                 for tag in "${image_tags[@]}"; do
573                     echo "Removing docker image opnfv/functest:$tag..."
574                     docker rmi opnfv/functest:$tag
575                 done
576             fi