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