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