4ffc3b013b8ff6fee6e431c0928af89b8b9954bb
[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         - gerrit-parameter:
61             branch: '{branch}'
62         - '{pod}-defaults'
63         - '{installer}-defaults'
64         - cperf-parameter:
65             testsuite: '{testsuite}'
66             gs-pathname: '{gs-pathname}'
67             docker-tag: '{docker-tag}'
68
69     scm:
70         - git-scm
71
72     builders:
73         - 'cperf-{testsuite}-builder'
74
75 ########################
76 # parameter macros
77 ########################
78 - parameter:
79     name: cperf-parameter
80     parameters:
81         - string:
82             name: CPERF_SUITE_NAME
83             default: '{testsuite}'
84             description: "Suite name to run"
85         - string:
86             name: GS_PATHNAME
87             default: '{gs-pathname}'
88             description: "Version directory where the opnfv documents will be stored in gs repository"
89         - string:
90             name: CI_DEBUG
91             default: 'false'
92             description: "Show debug output information"
93         - string:
94             name: DOCKER_TAG
95             default: '{docker-tag}'
96             description: 'Tag to pull docker image'
97
98 ########################
99 # trigger macros
100 ########################
101
102 ########################
103 # builder macros
104 ########################
105 - builder:
106     name: cperf-daily-builder
107     builders:
108         - 'cperf-cleanup'
109         - 'cperf-robot-cbench'
110
111 - builder:
112     name: cperf-robot-cbench
113     builders:
114         - shell: |
115             #!/bin/bash
116             set +e
117             # TODO: need to figure out the logic to get ${CONTROLLER_IP} used below
118             docker pull opnfv/cperf:$DOCKER_TAG
119             robot_cmd="pybot -e exclude -v ODL_SYSTEM_IP:${CONTROLLER_IP} -v switch_count:100 -v loops:10 \
120                               -v TOOLS_SYSTEM_IP:localhost -v duration_in_seconds:60"
121             robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
122             docker run opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
123
124 - builder:
125     name: cperf-cleanup
126     builders:
127         - shell: |
128             #!/bin/bash
129             [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
130
131             echo "Cleaning up docker containers/images..."
132             # Remove previous running containers if exist
133             if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then
134                 echo "Removing existing opnfv/cperf containers..."
135                 docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
136             fi
137
138             # Remove existing images if exist
139             if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
140                 echo "Docker images to remove:"
141                 docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
142                 image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
143                 for tag in "${image_tags[@]}"; do
144                     echo "Removing docker image opnfv/cperf:$tag..."
145                     docker rmi opnfv/cperf:$tag >/dev/null
146                 done
147             fi