################################### # 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 #-------------------------------- 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 $INSTALLER_IP:/home/stack/stackrc /tmp/stackrc source /tmp/stackrc # 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 mkdir -p /tmp/.ssh sudo scp $INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/ sudo chmod -R 0600 /tmp/.ssh # 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 \ -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 -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