d57d87bac10c82bc1ef478dce834cb59f36b2c29
[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
17 #--------------------------------
18 # POD, INSTALLER, AND BRANCH MAPPING
19 #--------------------------------
20     pod:
21 #--------------------------------
22 #        master
23 #--------------------------------
24         - intel-pod2:
25             installer: apex
26             <<: *master
27
28 #--------------------------------
29
30     testsuite:
31         - 'daily'
32
33     jobs:
34         - 'cperf-{installer}-{pod}-{testsuite}-{stream}'
35
36 ################################
37 # job template
38 ################################
39 - job-template:
40     name: 'cperf-{installer}-{pod}-{testsuite}-{stream}'
41
42     concurrent: true
43
44     properties:
45         - throttle:
46             enabled: true
47             max-per-node: 1
48             option: 'project'
49
50     wrappers:
51         - build-name:
52             name: '$BUILD_NUMBER Suite: $CPERF_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
53         - timeout:
54             timeout: 400
55             abort: true
56
57     parameters:
58         - project-parameter:
59             project: '{project}'
60         - '{pod}-defaults'
61         - '{installer}-defaults'
62         - cperf-parameter:
63             testsuite: '{testsuite}'
64             gs-pathname: '{gs-pathname}'
65             docker-tag: '{docker-tag}'
66
67     scm:
68         - git-scm
69
70     builders:
71         - 'cperf-{testsuite}-builder'
72
73 ########################
74 # parameter macros
75 ########################
76 - parameter:
77     name: cperf-parameter
78     parameters:
79         - string:
80             name: CPERF_SUITE_NAME
81             default: '{testsuite}'
82             description: "Suite name to run"
83         - string:
84             name: GS_PATHNAME
85             default: '{gs-pathname}'
86             description: "Version directory where the opnfv documents will be stored in gs repository"
87         - string:
88             name: CI_DEBUG
89             default: 'false'
90             description: "Show debug output information"
91         - string:
92             name: DOCKER_TAG
93             default: '{docker-tag}'
94             description: 'Tag to pull docker image'
95
96 ########################
97 # trigger macros
98 ########################
99
100 ########################
101 # builder macros
102 ########################
103 - builder:
104     name: cperf-daily-builder
105     builders:
106         - 'cperf-cleanup'
107         - 'cperf-robot-cbench'
108
109 - builder:
110     name: cperf-robot-cbench
111     builders:
112         - shell: |
113             #!/bin/bash
114             set +e
115             # TODO: need to figure out the logic to get ${CONTROLLER_IP} used below
116             docker pull opnfv/cperf:$DOCKER_TAG
117             robot_cmd="pybot -e exclude -v ODL_SYSTEM_IP:${CONTROLLER_IP} -v switch_count:100 -v loops:10 \
118                               -v TOOLS_SYSTEM_IP:localhost -v duration_in_seconds:60"
119             robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
120             docker run opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
121
122 - builder:
123     name: cperf-cleanup
124     builders:
125         - shell: |
126             #!/bin/bash
127             [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
128
129             echo "Cleaning up docker containers/images..."
130             # Remove previous running containers if exist
131             if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then
132                 echo "Removing existing opnfv/cperf containers..."
133                 docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
134             fi
135
136             # Remove existing images if exist
137             if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
138                 echo "Docker images to remove:"
139                 docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
140                 image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
141                 for tag in "${image_tags[@]}"; do
142                     echo "Removing docker image opnfv/cperf:$tag..."
143                     docker rmi opnfv/cperf:$tag >/dev/null
144                 done
145             fi