Script to build plain OVS RPM from master. 99/4699/3
authorThomas F Herbert <therbert@redhat.com>
Mon, 14 Dec 2015 04:22:43 +0000 (23:22 -0500)
committerThomas F Herbert <therbert@redhat.com>
Fri, 18 Dec 2015 11:41:21 +0000 (06:41 -0500)
Uploads RPM to artifactory.

Jira: OVSNFV-19

Change-Id: I586418a5e12435fd9d1594a4d2aca544c16a3a6d
Signed-off-by: Thomas F Herbert <therbert@redhat.com>
build/config [new file with mode: 0644]
ci/build.sh
ci/buildovs.sh [new file with mode: 0755]
ci/upload_artifacts.sh [new file with mode: 0755]

diff --git a/build/config b/build/config
new file mode 100644 (file)
index 0000000..337e07d
--- /dev/null
@@ -0,0 +1,5 @@
+# config file to be populated with configuration parameters for build.
+
+# OVS TAG
+export OVSTAG=master
+#export NOCHECK=true
index 18cb2c3..5272b21 100755 (executable)
@@ -1,5 +1,10 @@
 #!/bin/bash
 
+DIR=`pwd`
 echo "Hello OVSNFV community!"
 
+echo "Build ovs RPM for Linux kernel data plane from master branch of OVS."
+
+$DIR/buildovs.sh
+
 exit 0
diff --git a/ci/buildovs.sh b/ci/buildovs.sh
new file mode 100755 (executable)
index 0000000..b731bd1
--- /dev/null
@@ -0,0 +1,174 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Red Hat Inc. and others.
+# therbert@redhat.com
+# 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
+##############################################################################
+
+# Check to verify that I am being run by Jenkins CI.
+
+if [ -z ${WORKSPACE+1} ]; then
+    # We are not being run by Jenkins.
+    export WORKSPACE=$HOME/opnfv/ovsnfv
+else
+    export JENKINS=true
+fi
+
+
+if [ -z ${OVSTAG+1} ]; then
+    export TAG=master
+else
+    export TAG=$OVSTAG
+fi
+
+export DATE=`date +%Y-%m-%d`
+
+export BUILD_BASE=$WORKSPACE/build
+
+
+
+if [ ! -d $BUILD_BASE ]
+then
+    mkdir -p $BUILD_BASE
+    if [ ! -f $BUILD_BASE/config ]; then
+        touch $BUILd_BASE/config
+    fi
+fi
+
+export PATH=$PATH:$WORKSPACE/ci:$BUILD_BASE
+
+source $BUILD_BASE/config
+
+cd $BUILD_BASE
+export TOPDIR=$BUILD_BASE
+
+# build variables
+
+export TMP_RELEASE_DIR=$TOPDIR/release
+export CACHE_DIR=$TOPDIR/cache
+export TMPDIR=$TOPDIR/scratch
+export RPMDIR=$TOPDIR/rpmbuild
+
+echo "--------------------------------------------------"
+echo "Build OVS RPM from upstream git $TAG"
+echo
+
+mkdir -p $RPMDIR/BUILD
+mkdir -p $RPMDIR/RPMS
+mkdir -p $RPMDIR/SOURCES
+mkdir -p $RPMDIR/SPECS
+mkdir -p $RPMDIR/SRPMS
+
+if [ ! -d $TMP_RELEASE_DIR ]
+then
+    mkdir -p $TMP_RELEASE_DIR
+fi
+
+# Centos build server should support the following build prerequisites
+
+# yum install gcc make python-devel openssl-devel kernel-devel graphviz \
+# kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
+# libtool
+
+if [ -d $TMPDIR ]
+then
+    rm -rf $TMPDIR
+fi
+
+mkdir $TMPDIR
+
+cd $TMPDIR
+
+echo "---------------------"
+echo "Clone git repo $TAG"
+echo
+git clone https://github.com/openvswitch/ovs.git
+
+cd ovs
+echo "--------------------"
+echo "Checkout OVS $TAG"
+echo
+if [[ ! "$TAG" =~ "master" ]]; then
+    git checkout $TAG
+fi
+./boot.sh
+./configure
+echo "--------------------"
+echo "Make OVS $TAG"
+echo
+make
+#
+# Get version for master
+#
+echo "--------------------"
+echo "Get OVS version for $TAG"
+echo
+if [[ "$TAG" =~ "master" ]]; then
+    v=$($TMPDIR/ovs/utilities/ovs-vsctl --version | head -1 | cut -d' ' -f4)
+    export VERSION=$v
+else
+    export VERSION=${TAG:1}
+fi
+
+echo "--------------------"
+echo "OVS version is $VERSION"
+echo
+echo "--------------------"
+echo "Make OVS distribution $TAG"
+echo
+
+make dist
+
+cd $TMPDIR/ovs
+
+cp openvswitch-$VERSION.tar.gz $TOPDIR/rpmbuild/SOURCES
+cp openvswitch-$VERSION.tar.gz $TMPDIR
+
+cd $TMPDIR
+tar -xzf openvswitch-$VERSION.tar.gz
+
+cd $TMPDIR/openvswitch-$VERSION
+
+
+echo "--------------------"
+echo "Build OVS RPM"
+echo
+
+if [ ! -z ${NOCHECK+1} ]; then
+    # Build RPM without checks
+    #
+    rpmbuild -bb --define "_topdir `echo $RPMDIR`" --without check rhel/openvswitch.spec
+else
+    rpmbuild -bb --define "_topdir `echo $RPMDIR`" rhel/openvswitch.spec
+fi
+
+# Once build is done copy product to artifactory.
+
+echo "---------------------------------------"
+echo "Copy RPM into $TMP_RELEASE_DIR"
+echo
+cp $RPMDIR/RPMS/x86_64/*.rpm $TMP_RELEASE_DIR
+
+# cleanup
+
+echo "---------------------------------------"
+echo "Cleanup $TMP_RELEASE_DIR"
+echo
+cd $BUILDDIR
+
+if [ -d $TMPDIR ]
+then
+    echo rm -rf $TMPDIR
+    rm -rf $TMPDIR
+fi
+
+# copy artifacts.
+
+if [ ! -z ${JENKINS+1} ]; then
+    upload_artifacts.sh
+fi
+
+exit 0
diff --git a/ci/upload_artifacts.sh b/ci/upload_artifacts.sh
new file mode 100755 (executable)
index 0000000..765a336
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -o errexit
+set -o nounset
+set -o pipefail
+
+# log info to console
+echo "Uploading the OVS $VERSION RPM artifacts. "
+echo "-----------------------------------------"
+echo
+
+export RPMFILE_D=openvswitch-debuginfo-$VERSION-1.x86_64.rpm
+export RPMFILE=openvswitch-$VERSION-1.x86_64.rpm
+
+# upload artifact and additional files to google storage
+echo gsutil cp $TMP_RELEASE_DIR/$RPMFILE_D gs://artifacts.opnfv.org/ovsnfv/opnfv-$DATE-$RPMFILE_D
+gsutil cp $TMP_RELEASE_DIR/$RPMFILE_D gs://artifacts.opnfv.org/ovsnfv/opnfv-$DATE-$RPMFILE_D
+
+echo gsutil cp $TMP_RELEASE_DIR/$RPMFILE gs://artifacts.opnfv.org/ovsnfv/opnfv-$DATE-$RPMFILE
+gsutil cp $TMP_RELEASE_DIR/$RPMFILE gs://artifacts.opnfv.org/ovsnfv/opnfv-$DATE-$RPMFILE
+
+echo
+echo "------------------------------------------------------"
+echo "Done!"
+echo "Artifacts are available as http://artifacts.opnfv.org/ovsnfv/opnfv-$DATE-$RPMFILE"