diff options
Diffstat (limited to 'jjb/cperf/cperf-ci-jobs.yaml')
-rw-r--r-- | jjb/cperf/cperf-ci-jobs.yaml | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/jjb/cperf/cperf-ci-jobs.yaml b/jjb/cperf/cperf-ci-jobs.yaml new file mode 100644 index 000000000..fdd3509d1 --- /dev/null +++ b/jjb/cperf/cperf-ci-jobs.yaml @@ -0,0 +1,190 @@ +--- +################################### +# job configuration for cperf +################################### +- project: + name: cperf-ci-jobs + project: cperf + + # ------------------------------- + # BRANCH ANCHORS + # ------------------------------- + master: &master + stream: master + branch: '{stream}' + gs-pathname: '' + docker-tag: 'latest' + danube: &danube + stream: danube + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + docker-tag: 'stable' + + # ------------------------------- + # POD, INSTALLER, AND BRANCH MAPPING + # ------------------------------- + pod: + # ------------------------------- + # master + # ------------------------------- + - intel-pod2: + installer: apex + <<: *master + - intel-pod2: + installer: apex + <<: *danube + + testsuite: + - 'daily' + + jobs: + - 'cperf-{installer}-{pod}-{testsuite}-{stream}' + +################################ +# job template +################################ +- job-template: + name: 'cperf-{installer}-{pod}-{testsuite}-{stream}' + + concurrent: true + + properties: + - logrotate-default + - throttle: + enabled: true + max-per-node: 1 + option: 'project' + + wrappers: + - build-name: + name: '$BUILD_NUMBER Suite: $CPERF_SUITE_NAME Scenario: $DEPLOY_SCENARIO' + - timeout: + timeout: 400 + abort: true + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{pod}-defaults' + - '{installer}-defaults' + - cperf-parameter: + testsuite: '{testsuite}' + gs-pathname: '{gs-pathname}' + docker-tag: '{docker-tag}' + + scm: + - git-scm + + builders: + - 'cperf-{testsuite}-builder' + +######################## +# parameter macros +######################## +- parameter: + name: cperf-parameter + parameters: + - string: + name: CPERF_SUITE_NAME + default: '{testsuite}' + description: "Suite name to run" + - string: + name: GS_PATHNAME + default: '{gs-pathname}' + description: "Version directory where the opnfv documents will be stored in gs repository" + - string: + name: CI_DEBUG + default: 'false' + description: "Show debug output information" + - string: + name: DOCKER_TAG + default: '{docker-tag}' + description: 'Tag to pull docker image' + +######################## +# trigger macros +######################## + +######################## +# builder macros +######################## +- builder: + name: cperf-daily-builder + builders: + - 'cperf-cleanup' + - 'cperf-robot-cbench' + +- builder: + name: cperf-robot-cbench + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \ + grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+") + INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'}) + + sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/overcloudrc /tmp/overcloudrc + sudo chmod 755 /tmp/overcloudrc + source /tmp/overcloudrc + + # robot suites need the ssh key to log in to controller nodes, so throwing it + # in tmp, and mounting /tmp as $HOME as far as robot is concerned + sudo rm -rf /tmp/.ssh + sudo mkdir /tmp/.ssh + sudo chmod 0700 /tmp/.ssh + sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/ + sudo chown -R jenkins-ci:jenkins-ci /tmp/.ssh + # done with sudo. jenkins-ci is the user from this point + chmod 0600 /tmp/.ssh/id_rsa + + # cbench requires the openflow drop test feature to be installed. + sshpass -p karaf ssh -o StrictHostKeyChecking=no \ + -o UserKnownHostsFile=/dev/null \ + -o LogLevel=error \ + -p 8101 karaf@$SDN_CONTROLLER_IP \ + feature:install odl-openflowplugin-flow-services-ui odl-openflowplugin-drop-test + + docker pull opnfv/cperf:$DOCKER_TAG + + robot_cmd="pybot -e exclude -L TRACE -d /tmp \ + -v ODL_SYSTEM_1_IP:${SDN_CONTROLLER_IP} \ + -v ODL_SYSTEM_IP:${SDN_CONTROLLER_IP} \ + -v BUNDLEFOLDER:/opt/opendaylight \ + -v RESTCONFPORT:8081 \ + -v USER_HOME:/tmp \ + -v USER:heat-admin \ + -v ODL_SYSTEM_USER:heat-admin \ + -v TOOLS_SYSTEM_IP:localhost \ + -v of_port:6653" + robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot" + + docker run -i -v /tmp:/tmp opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite} + +- builder: + name: cperf-cleanup + builders: + - shell: | + #!/bin/bash + [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null" + + echo "Cleaning up docker containers/images..." + # Remove previous running containers if exist + if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then + echo "Removing existing opnfv/cperf containers..." + docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect} + fi + + # Remove existing images if exist + if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then + echo "Docker images to remove:" + docker images | head -1 && docker images | grep opnfv/cperf >${redirect} + image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}')) + for tag in "${image_tags[@]}"; do + echo "Removing docker image opnfv/cperf:$tag..." + docker rmi opnfv/cperf:$tag >/dev/null + done + fi |