fdd3509d18f36637b8bb45cbbf1ebe048642344b
[releng.git] / jjb / cperf / cperf-ci-jobs.yaml
1 ---
2 ###################################
3 # job configuration for cperf
4 ###################################
5 - project:
6     name: cperf-ci-jobs
7     project: cperf
8
9     # -------------------------------
10     # BRANCH ANCHORS
11     # -------------------------------
12     master: &master
13       stream: master
14       branch: '{stream}'
15       gs-pathname: ''
16       docker-tag: 'latest'
17     danube: &danube
18       stream: danube
19       branch: 'stable/{stream}'
20       gs-pathname: '/{stream}'
21       docker-tag: 'stable'
22
23     # -------------------------------
24     # POD, INSTALLER, AND BRANCH MAPPING
25     # -------------------------------
26     pod:
27       # -------------------------------
28       #        master
29       # -------------------------------
30       - intel-pod2:
31           installer: apex
32           <<: *master
33       - intel-pod2:
34           installer: apex
35           <<: *danube
36
37     testsuite:
38       - 'daily'
39
40     jobs:
41       - 'cperf-{installer}-{pod}-{testsuite}-{stream}'
42
43 ################################
44 # job template
45 ################################
46 - job-template:
47     name: 'cperf-{installer}-{pod}-{testsuite}-{stream}'
48
49     concurrent: true
50
51     properties:
52       - logrotate-default
53       - throttle:
54           enabled: true
55           max-per-node: 1
56           option: 'project'
57
58     wrappers:
59       - build-name:
60           name: '$BUILD_NUMBER Suite: $CPERF_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
61       - timeout:
62           timeout: 400
63           abort: true
64
65     parameters:
66       - project-parameter:
67           project: '{project}'
68           branch: '{branch}'
69       - '{pod}-defaults'
70       - '{installer}-defaults'
71       - cperf-parameter:
72           testsuite: '{testsuite}'
73           gs-pathname: '{gs-pathname}'
74           docker-tag: '{docker-tag}'
75
76     scm:
77       - git-scm
78
79     builders:
80       - 'cperf-{testsuite}-builder'
81
82 ########################
83 # parameter macros
84 ########################
85 - parameter:
86     name: cperf-parameter
87     parameters:
88       - string:
89           name: CPERF_SUITE_NAME
90           default: '{testsuite}'
91           description: "Suite name to run"
92       - string:
93           name: GS_PATHNAME
94           default: '{gs-pathname}'
95           description: "Version directory where the opnfv documents will be stored in gs repository"
96       - string:
97           name: CI_DEBUG
98           default: 'false'
99           description: "Show debug output information"
100       - string:
101           name: DOCKER_TAG
102           default: '{docker-tag}'
103           description: 'Tag to pull docker image'
104
105 ########################
106 # trigger macros
107 ########################
108
109 ########################
110 # builder macros
111 ########################
112 - builder:
113     name: cperf-daily-builder
114     builders:
115       - 'cperf-cleanup'
116       - 'cperf-robot-cbench'
117
118 - builder:
119     name: cperf-robot-cbench
120     builders:
121       - shell: |
122           #!/bin/bash
123           set -o errexit
124           set -o nounset
125           set -o pipefail
126           undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
127                             grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
128           INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
129
130           sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/overcloudrc /tmp/overcloudrc
131           sudo chmod 755 /tmp/overcloudrc
132           source /tmp/overcloudrc
133
134           # robot suites need the ssh key to log in to controller nodes, so throwing it
135           # in tmp, and mounting /tmp as $HOME as far as robot is concerned
136           sudo rm -rf /tmp/.ssh
137           sudo mkdir /tmp/.ssh
138           sudo chmod 0700 /tmp/.ssh
139           sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/
140           sudo chown -R jenkins-ci:jenkins-ci /tmp/.ssh
141           # done with sudo. jenkins-ci is the user from this point
142           chmod 0600 /tmp/.ssh/id_rsa
143
144           # cbench requires the openflow drop test feature to be installed.
145           sshpass -p karaf ssh -o StrictHostKeyChecking=no \
146                                -o UserKnownHostsFile=/dev/null \
147                                -o LogLevel=error \
148                                -p 8101 karaf@$SDN_CONTROLLER_IP \
149                                 feature:install odl-openflowplugin-flow-services-ui odl-openflowplugin-drop-test
150
151           docker pull opnfv/cperf:$DOCKER_TAG
152
153           robot_cmd="pybot -e exclude -L TRACE -d /tmp \
154                       -v ODL_SYSTEM_1_IP:${SDN_CONTROLLER_IP} \
155                       -v ODL_SYSTEM_IP:${SDN_CONTROLLER_IP} \
156                       -v BUNDLEFOLDER:/opt/opendaylight \
157                       -v RESTCONFPORT:8081 \
158                       -v USER_HOME:/tmp \
159                       -v USER:heat-admin \
160                       -v ODL_SYSTEM_USER:heat-admin \
161                       -v TOOLS_SYSTEM_IP:localhost \
162                       -v of_port:6653"
163           robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
164
165           docker run -i -v /tmp:/tmp opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
166
167 - builder:
168     name: cperf-cleanup
169     builders:
170       - shell: |
171           #!/bin/bash
172           [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
173
174           echo "Cleaning up docker containers/images..."
175           # Remove previous running containers if exist
176           if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then
177               echo "Removing existing opnfv/cperf containers..."
178               docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
179           fi
180
181           # Remove existing images if exist
182           if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
183               echo "Docker images to remove:"
184               docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
185               image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
186               for tag in "${image_tags[@]}"; do
187                   echo "Removing docker image opnfv/cperf:$tag..."
188                   docker rmi opnfv/cperf:$tag >/dev/null
189               done
190           fi