2742f08f78cba0339da92723080c244916ea4949
[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 $INSTALLER_IP:/home/stack/stackrc /tmp/stackrc
130             source /tmp/stackrc
131
132             # robot suites need the ssh key to log in to controller nodes, so throwing it
133             # in tmp, and mounting /tmp as $HOME as far as robot is concerned
134             sudo mkdir -p /tmp/.ssh
135             sudo scp $INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/
136             sudo chmod -R 0600 /tmp/.ssh
137
138             # cbench requires the openflow drop test feature to be installed.
139             sshpass -p karaf ssh -o StrictHostKeyChecking=no \
140                                  -o UserKnownHostsFile=/dev/null \
141                                  -o LogLevel=error \
142                                  -p 8101 karaf@$SDN_CONTROLLER_IP \
143                                   feature:install odl-openflowplugin-flow-services-ui odl-openflowplugin-drop-test
144
145             docker pull opnfv/cperf:$DOCKER_TAG
146
147             robot_cmd="pybot -e exclude -L TRACE \
148                         -v ODL_SYSTEM_1_IP:${SDN_CONTROLLER_IP} \
149                         -v ODL_SYSTEM_IP:${SDN_CONTROLLER_IP} \
150                         -v BUNDLEFOLDER:/opt/opendaylight \
151                         -v RESTCONFPORT:8081 \
152                         -v USER_HOME:/tmp \
153                         -v USER:heat-admin \
154                         -v ODL_SYSTEM_USER:heat-admin \
155                         -v TOOLS_SYSTEM_IP:localhost \
156                         -v of_port:6653"
157             robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
158
159             docker run -v /tmp:/tmp opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
160
161 - builder:
162     name: cperf-cleanup
163     builders:
164         - shell: |
165             #!/bin/bash
166             [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
167
168             echo "Cleaning up docker containers/images..."
169             # Remove previous running containers if exist
170             if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then
171                 echo "Removing existing opnfv/cperf containers..."
172                 docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
173             fi
174
175             # Remove existing images if exist
176             if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
177                 echo "Docker images to remove:"
178                 docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
179                 image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
180                 for tag in "${image_tags[@]}"; do
181                     echo "Removing docker image opnfv/cperf:$tag..."
182                     docker rmi opnfv/cperf:$tag >/dev/null
183                 done
184             fi