Merge "Cleanup functest.yml"
[releng.git] / jjb / functest / functest.yml
1 ###################################
2 # job configuration for functest
3 ###################################
4 - project:
5     name: functest
6
7     project: '{name}'
8
9     pod:
10         - opnfv-jump-1:
11             installer: apex
12         - opnfv-jump-2:
13             installer: fuel
14         - orange-test1:
15             installer: fuel
16         - orange-pod2:
17             installer: joid
18         - huawei-us-deploy-bare-1:
19             installer: compass4nfv
20         - intel-pod5:
21             installer: joid
22
23     suite:
24         - 'daily':
25             suitename: 'functest-daily'
26         - 'tempest':
27             suitename: 'functest-suite'
28         - 'rally':
29             suitename: 'functest-suite'
30         - 'odl':
31             suitename: 'functest-suite'
32         - 'vims':
33             suitename: 'functest-suite'
34         - 'vping':
35             suitename: 'functest-suite'
36
37     jobs:
38         - 'functest-{installer}-{pod}-{suite}-{stream}'
39         - 'functest-verify-{stream}'
40
41     stream:
42         - master:
43             branch: 'master'
44             gs-pathname: ''
45 #        - brahmaputra:
46 #            branch: 'stable/brahmaputra'
47 #            gs-pathname: '/brahmaputra'
48
49 ################################
50 # job template
51 ################################
52 - job-template:
53     name: 'functest-{installer}-{pod}-{suite}-{stream}'
54
55     parameters:
56         - project-parameter:
57             project: '{project}'
58         - '{pod}-defaults'
59         - '{installer}-defaults'
60         - string:
61             name: FUNCTEST_SUITE_NAME
62             default: '{suite}'
63         - functest-parameter
64
65     scm:
66         - git-scm:
67             credentials-id: '{ssh-credentials}'
68             refspec: ''
69             branch: '{branch}'
70
71     builders:
72         - '{obj:suitename}'
73
74 - job-template:
75     name: 'functest-verify-{stream}'
76
77     parameters:
78         - project-parameter:
79             project: '{project}'
80         - gerrit-parameter:
81             branch: '{branch}'
82     scm:
83         - gerrit-trigger-scm:
84             credentials-id: '{ssh-credentials}'
85             refspec: '$GERRIT_REFSPEC'
86             choosing-strategy: 'gerrit'
87
88     triggers:
89         - gerrit:
90             trigger-on:
91                 - patchset-created-event:
92                     exclude-drafts: 'false'
93                     exclude-trivial-rebase: 'false'
94                     exclude-no-code-change: 'false'
95                 - draft-published-event
96                 - comment-added-contains-event:
97                     comment-contains-value: 'recheck'
98                 - comment-added-contains-event:
99                     comment-contains-value: 'reverify'
100             projects:
101               - project-compare-type: 'ANT'
102                 project-pattern: 'functest'
103                 branches:
104                   - branch-compare-type: 'ANT'
105                     branch-pattern: '**/{branch}'
106
107     builders:
108         - shell: |
109             echo "Nothing to verify!"
110
111 ########################
112 # parameter macros
113 ########################
114 - parameter:
115     name: functest-parameter
116     parameters:
117         - string:
118             name: GS_PATHNAME
119             default: '{gs-pathname}'
120             description: "Version directory where the opnfv documents will be stored in gs repository"
121         - string:
122             name: FUNCTEST_REPO_DIR
123             default: "/home/opnfv/repos/functest"
124             description: "Directory where the Functest repository is cloned"
125 ########################
126 # trigger macros
127 ########################
128 - trigger:
129     name: 'functest-master'
130     triggers:
131         - pollscm: "H 9 * * *"
132 ########################
133 # builder macros
134 ########################
135 - builder:
136     name: functest-daily
137     builders:
138         - 'functest-cleanup'
139         - 'set-functest-env'
140         - 'functest-all'
141 #        - 'functest-store-results'
142
143 - builder:
144     name: functest-suite
145     builders:
146         - shell: |
147             #!/bin/bash
148             set +e
149
150             echo "Functest: run $FUNCTEST_SUITE_NAME"
151             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME"
152             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
153             docker exec $container_id $cmd
154
155 - builder:
156     name: functest-all
157     builders:
158         - shell: |
159             #!/bin/bash
160             set +e
161
162             echo "Functest: running all the tests"
163             cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh"
164             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
165             docker exec $container_id $cmd
166
167 - builder:
168     name: set-functest-env
169     builders:
170         - shell: |
171             #!/bin/bash
172             set +e
173             if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
174                 INSTALLER_IP=$(grep instack /var/lib/libvirt/dnsmasq/default.leases \
175                     |awk '{print $3}' | head -n 1)
176                 sshkey="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
177             fi
178             echo "Functest: Start Docker and prepare environment"
179             envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} -e NODE_NAME=${NODE_NAME}"
180             labconfig=""
181             # If production lab then creds may be retrieved dynamically
182             # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
183             if [ -n "${LAB_CONFIG}" ]; then
184                 labconfig="-v ${LAB_CONFIG}:/home/opnfv/functest/conf/openstack.creds"
185             fi
186
187             docker pull opnfv/functest:latest_stable
188             cmd="docker run -id -e $envs ${labconfig} ${sshkey} opnfv/functest:latest_stable /bin/bash"
189             echo "Functest: Running docker run command: ${cmd}"
190             ${cmd}
191             docker ps -a
192             sleep 5
193             container_id=$(docker ps | grep 'opnfv/functest:latest_stable' | awk '{print $1}' | head -1)
194             echo "Container ID=${container_id}"
195             if [ -z ${container_id} ]; then
196                 echo "Cannot find opnfv/functest container ID ${container_id}. Please check if it is existing."
197                 docker ps -a
198                 exit 1
199             fi
200             echo "Starting the container: docker start ${container_id}"
201             docker start ${container_id}
202             sleep 5
203             docker ps
204             if [ $(docker ps | grep 'opnfv/functest:latest_stable' | wc -l) == 0 ]; then
205                 echo "The container opnfv/functest with ID=${container_id} has not been properly started. Exiting..."
206                 exit 1
207             fi
208             cmd="${FUNCTEST_REPO_DIR}/docker/prepare_env.sh"
209             echo "Executing command inside the docker: ${cmd}"
210             docker exec ${container_id} ${cmd}
211
212 - builder:
213     name: functest-store-results
214     builders:
215         - shell:
216             !include-raw res-build.sh
217
218 - builder:
219     name: functest-cleanup
220     builders:
221         - shell: |
222             #!/bin/bash
223
224             echo "Cleaning up docker containers/images..."
225
226             # Remove previous running containers if exist
227             if [[ ! -z $(docker ps -a | grep opnfv/functest) ]]; then
228                 echo "Removing existing opnfv/functest containers..."
229                 docker ps | grep opnfv/functest | awk '{print $1}' | xargs docker stop
230                 docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm
231             fi
232
233             # Remove existing images if exist
234             if [[ ! -z $(docker images | grep opnfv/functest) ]]; then
235                 echo "Docker images to remove:"
236                 docker images | head -1 && docker images | grep opnfv/functest
237                 image_tags=($(docker images | grep opnfv/functest | awk '{print $2}'))
238                 for tag in "${image_tags[@]}"; do
239                     echo "Removing docker image opnfv/functest:$tag..."
240                     docker rmi opnfv/functest:$tag
241                 done
242             fi