From d03858bbac357b6d705c7137d2d20d5c8e34ecc6 Mon Sep 17 00:00:00 2001 From: Jo¶rgen Karlsson Date: Fri, 2 Oct 2015 10:18:17 +0200 Subject: Docker container for Yardstick CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Docker container is intended to be run by the CI pipeline but it may also be used stand alone. Building the docker image: $ cd yardstick/ci/docker $ make clean && make Pushing image to docker hub: $ docker login ... (credentials needed) $ docker push opnfv/yardstick-ci (need to connect your account to opnfv) The docker image must be manually built and pushed to the docker Hub. This will probably be handled by gerrit triggers in the future (including revision handling and tagging of images). Example invocation: docker run \ --privileged=true \ -t \ -e "INSTALLER_TYPE=fuel" \ -e "INSTALLER_IP=10.20.0.2" \ -e YARDSTICK_BRANCH="refs/changes/01/2201/7" \ -e RELENG_BRANCH="master" \ opnfv/yardstick-ci \ run_benchmarks Basic steps performed by the container: 1. clone yardstick and releng repos 2 setup OS credentials (releng scripts) 3. install yardstick and dependencies 4. build yardstick cloud image and upload it to glance 5. upload cirros-0.3.3 cloud image to glance 6. run yardstick test scenarios If anything goes wrong in any of the steps above a non-zero exit status is returned. Some limitations: Scenario results (yardstick.out) are currently discarded. A future patch will take care of dumping the result to a database. Currently the container only runs the ping sample scenario. Testsuite execution (and selection) will be added in a future patch. The container has only been tested against fuel installations. Change-Id: I0bd29035082d3e283429c7392de8fc11b9fd777f JIRA: YARDSTICK-136 Signed-off-by: Jo¶rgen Karlsson --- ci/docker/Makefile | 27 ++++++++++++++++ ci/docker/yardstick-ci/Dockerfile | 34 ++++++++++++++++++++ ci/docker/yardstick-ci/run_benchmarks | 60 +++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 ci/docker/Makefile create mode 100644 ci/docker/yardstick-ci/Dockerfile create mode 100755 ci/docker/yardstick-ci/run_benchmarks (limited to 'ci/docker') diff --git a/ci/docker/Makefile b/ci/docker/Makefile new file mode 100644 index 000000000..81189960d --- /dev/null +++ b/ci/docker/Makefile @@ -0,0 +1,27 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +SHELL = /bin/bash + +IMAGE = opnfv/yardstick-ci + +.PHONY: all +all: .docker + +.docker: + /usr/bin/docker build --rm=true --no-cache=true -t $(IMAGE):14.04 yardstick-ci + /usr/bin/docker tag -f $(IMAGE):14.04 $(IMAGE) + touch .docker + +.PHONY: clean +clean: + docker ps | grep $(IMAGE) | awk '{print $$1}' | xargs -r docker stop + docker ps -a | grep $(IMAGE) | awk '{print $$1}' | xargs -r docker rm + docker images -a | grep $(IMAGE) | awk '{print $$3}' | sort | uniq | xargs -r docker rmi + rm -f .docker diff --git a/ci/docker/yardstick-ci/Dockerfile b/ci/docker/yardstick-ci/Dockerfile new file mode 100644 index 000000000..15b0f6224 --- /dev/null +++ b/ci/docker/yardstick-ci/Dockerfile @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +FROM ubuntu:14.04 + +LABEL image=opnfv/yardstick-ci + +ENV YARDSTICK_REPO_DIR /home/yardstick + +RUN apt-get update && apt-get install -y \ + wget \ + git \ + sshpass \ + qemu-utils \ + kpartx \ + libffi-dev \ + libssl-dev \ + python \ + python-dev \ + python-setuptools && \ + easy_install -U setuptools + +RUN apt-get -y autoremove && \ + apt-get clean + +RUN git clone https://gerrit.opnfv.org/gerrit/yardstick ${YARDSTICK_REPO_DIR} + +COPY ./run_benchmarks /usr/local/bin/ diff --git a/ci/docker/yardstick-ci/run_benchmarks b/ci/docker/yardstick-ci/run_benchmarks new file mode 100755 index 000000000..391ee63a4 --- /dev/null +++ b/ci/docker/yardstick-ci/run_benchmarks @@ -0,0 +1,60 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +set -e + +: ${YARDSTICK_REPO:='https://gerrit.opnfv.org/gerrit/yardstick'} +: ${YARDSTICK_REPO_DIR:='/home/yardstick'} +: ${YARDSTICK_BRANCH:='master'} + +: ${RELENG_REPO:='https://gerrit.opnfv.org/gerrit/releng'} +: ${RELENG_REPO_DIR:='/home/releng'} +: ${RELENG_BRANCH:='master'} + +: ${INSTALLER_TYPE:='fuel'} +: ${INSTALLER_IP:='10.20.0.2'} + +: ${EXTERNAL_NET_ID:='net04_ext'} + +# clone releng +if [ ! -d $RELENG_REPO_DIR ]; then + git clone $RELENG_REPO $RELENG_REPO_DIR +fi +cd $RELENG_REPO_DIR +git fetch --tags --progress $RELENG_REPO $RELENG_BRANCH +git checkout FETCH_HEAD + +# clone yardstick +if [ ! -d $YARDSTICK_REPO_DIR ]; then + git clone YARDSTICK_REPO $YARDSTICK_REPO_DIR +fi +cd $YARDSTICK_REPO_DIR +git fetch --tags --progress $YARDSTICK_REPO $YARDSTICK_BRANCH +git checkout FETCH_HEAD + +# Create openstack credentials +$RELENG_REPO_DIR/utils/fetch_os_creds.sh \ + -d /tmp/openrc \ + -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} + +source /tmp/openrc + +# FIXME: Temporary OPNFV playground hack +if [ "$INSTALLER_TYPE" == "fuel" ]; then + ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" + if sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \ + fuel environment --env 1 | grep opnfv-virt; then + export OS_ENDPOINT_TYPE='publicURL' + fi +fi + +export EXTERNAL_NET_ID + +$YARDSTICK_REPO_DIR/ci/yardstick-verify -- cgit 1.2.3-korg