6cd4e22dc0a2a8c6991b201f108b32c5cb4708e7
[releng.git] / jjb / cperf / cperf-ci-jobs.yml
1 ###################################
2 # job configuration for cperf
3 ###################################
4 - project:
5     name: cperf-ci-jobs
6     project: cperf
7
8 #--------------------------------
9 # BRANCH ANCHORS
10 #--------------------------------
11     master: &master
12         stream: master
13         branch: '{stream}'
14         gs-pathname: ''
15         docker-tag: 'latest'
16     danube: &danube
17         stream: danube
18         branch: 'stable/{stream}'
19         gs-pathname: '/{stream}'
20         docker-tag: 'stable'
21
22 #--------------------------------
23 # POD, INSTALLER, AND BRANCH MAPPING
24 #--------------------------------
25     pod:
26 #--------------------------------
27 #        master
28 #--------------------------------
29         - intel-pod2:
30             installer: apex
31             <<: *master
32         - intel-pod2:
33             installer: apex
34             <<: *danube
35 #--------------------------------
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             sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/overcloudrc /tmp/overcloudrc
130             sudo chmod 755 /tmp/overcloudrc
131             source /tmp/overcloudrc
132
133             # robot suites need the ssh key to log in to controller nodes, so throwing it
134             # in tmp, and mounting /tmp as $HOME as far as robot is concerned
135             sudo mkdir -p /tmp/.ssh
136             sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/
137             sudo chown -R jenkins-ci:jenkins-ci /tmp/.ssh
138             # done with sudo. jenkins-ci is the user from this point
139             sudo mv /tmp/.ssh/id_rsa ~jenkins-ci/.ssh/
140             chmod -R 0600 ~jenkins-ci/.ssh
141
142             # cbench requires the openflow drop test feature to be installed.
143             sshpass -p karaf ssh -o StrictHostKeyChecking=no \
144                                  -o UserKnownHostsFile=/dev/null \
145                                  -o LogLevel=error \
146                                  -p 8101 karaf@$SDN_CONTROLLER_IP \
147                                   feature:install odl-openflowplugin-flow-services-ui odl-openflowplugin-drop-test
148
149             docker pull opnfv/cperf:$DOCKER_TAG
150
151             robot_cmd="pybot -e exclude -L TRACE \
152                         -v ODL_SYSTEM_1_IP:${SDN_CONTROLLER_IP} \
153                         -v ODL_SYSTEM_IP:${SDN_CONTROLLER_IP} \
154                         -v BUNDLEFOLDER:/opt/opendaylight \
155                         -v RESTCONFPORT:8081 \
156                         -v USER_HOME:/tmp \
157                         -v USER:heat-admin \
158                         -v ODL_SYSTEM_USER:heat-admin \
159                         -v TOOLS_SYSTEM_IP:localhost \
160                         -v of_port:6653"
161             robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
162
163             docker run -v /tmp:/tmp opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
164
165 - builder:
166     name: cperf-cleanup
167     builders:
168         - shell: |
169             #!/bin/bash
170             [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
171
172             echo "Cleaning up docker containers/images..."
173             # Remove previous running containers if exist
174             if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then
175                 echo "Removing existing opnfv/cperf containers..."
176                 docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
177             fi
178
179             # Remove existing images if exist
180             if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
181                 echo "Docker images to remove:"
182                 docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
183                 image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
184                 for tag in "${image_tags[@]}"; do
185                     echo "Removing docker image opnfv/cperf:$tag..."
186                     docker rmi opnfv/cperf:$tag >/dev/null
187                 done
188             fi