diff options
author | Swati <swatix.sharma@intel.com> | 2016-06-27 17:53:53 +0530 |
---|---|---|
committer | swatisharma <swatix.sharma@intel.com> | 2016-08-11 15:47:22 +0530 |
commit | 7552c26370d38ef5dd182682a0d3bf096661fe0e (patch) | |
tree | 4b989be4c6250a1b3768b99c62004d465bc9d798 /ci/build_deb | |
parent | 6ec128a4e6a1819881f8db6659d4024aac35ce38 (diff) |
OPNFV KVM4NFV CICD: Scripts for creating Rpms & Debians for Kernel, Qemu
This patch contains the files for generating rpms & debians for both kernel
& qemu changes, as part of kvmfornfv project development. The scripts will be
triggered to build kernel-rpm & qemu-rpm packages inside centos docker, and
kernel-debian & qemu-debian packages inside ubuntu docker, as part of the
CICD process.
After the new builds are ready, they will be deployed on the pharos testbed
for verification. Later, these will be consumed/triggered by verify/daily
Releng JJBs.
Reference: https://wiki.opnfv.org/display/kvm/KVM4NFV+CICD+Jobs
Change-Id: Ie8e8108566790a6c8db2fef1c9b5799a41732b44
Signed-off-by: Swati Sharma <swatix.sharma@intel.com>
Diffstat (limited to 'ci/build_deb')
-rw-r--r-- | ci/build_deb/Dockerfile | 22 | ||||
-rwxr-xr-x | ci/build_deb/build_debs.sh | 20 | ||||
-rwxr-xr-x | ci/build_deb/build_debs_docker.sh | 22 | ||||
-rwxr-xr-x | ci/build_deb/kernel_deb_build.sh | 69 | ||||
-rwxr-xr-x | ci/build_deb/mkcontrol.sh | 8 | ||||
-rwxr-xr-x | ci/build_deb/qemu_deb_build.sh | 60 |
6 files changed, 201 insertions, 0 deletions
diff --git a/ci/build_deb/Dockerfile b/ci/build_deb/Dockerfile new file mode 100644 index 000000000..676afcf67 --- /dev/null +++ b/ci/build_deb/Dockerfile @@ -0,0 +1,22 @@ +#!/bin/bash + +FROM ubuntu:14.04.3 +RUN apt-get update && apt-get install -y \ + git \ + fakeroot \ + build-essential \ + ncurses-dev xz-utils \ + kernel-package \ + bc \ + autoconf \ + python \ + pkg-config \ + zlibc \ + zlib1g \ + zlib1g-dev \ + libglib2.0-dev \ + libtool \ + flex \ + bison +RUN echo "ALL ALL=NOPASSWD: ALL" > /etc/sudoers.d/open-sudo +RUN chmod 0440 /etc/sudoers.d/open-sudo diff --git a/ci/build_deb/build_debs.sh b/ci/build_deb/build_debs.sh new file mode 100755 index 000000000..2fcd3629b --- /dev/null +++ b/ci/build_deb/build_debs.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -eux +BUILD_FOR=${BUILD_FOR:-ubuntu} + +function build_deb_pkg { + case $1 in + ubuntu) + sudo docker build -t kvm_deb . + sudo docker run -v $WORKSPACE:/opt/kvmfornfv -t kvm_deb \ + /opt/kvmfornfv/ci/build_deb/build_debs_docker.sh + ;; + *) echo "Not supported system"; exit 1;; + esac +} + +for system in $BUILD_FOR +do + build_deb_pkg $system +done diff --git a/ci/build_deb/build_debs_docker.sh b/ci/build_deb/build_debs_docker.sh new file mode 100755 index 000000000..3fd35ff54 --- /dev/null +++ b/ci/build_deb/build_debs_docker.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +tmp_deb_build_dir=/root/kvmfornfv +deb_build_dir=/opt/kvmfornfv +tmp_deb_output_dir=$tmp_deb_build_dir/build_output +deb_output_dir=$deb_build_dir/build_output +cp -r $deb_build_dir $tmp_deb_build_dir + +# Build qemu debian packages +cd $tmp_deb_build_dir/qemu +make clean +./configure +make +cd $tmp_deb_build_dir +./ci/build_deb/qemu_deb_build.sh build_output + +# Build kernel debian packages +./ci/build_deb/kernel_deb_build.sh build_output + +# Move Kernel and Qemu Debian builds from tmp_output_dir to output_dir +mv $tmp_deb_output_dir/qemu-* $deb_output_dir +mv $tmp_deb_output_dir/linux-* $deb_output_dir diff --git a/ci/build_deb/kernel_deb_build.sh b/ci/build_deb/kernel_deb_build.sh new file mode 100755 index 000000000..824960e7f --- /dev/null +++ b/ci/build_deb/kernel_deb_build.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +SRC=/root +kernel_src_dir=kernel +config_file="arch/x86/configs/opnfv.config" +VERSION="1.0.OPNFV" +output_dir="$1" + +usage () { + echo "usage: ${0} output_dir" + exit 1 +} + +if [[ -z "$@" ]]; then + usage +fi + +if [ ! -d ${output_dir} -o ! -w ${output_dir} ] ; then + echo "${0}: Output directory '${output_dir}' does not exist or cannot be written" + exit 1 +fi + +if [ ! -d ${kernel_src_dir} ] ; then + echo "${0}: Directory '${kernel_src_dir}' does not exist, run this script from the root of kvmfornfv source tree" + exit 1 +fi + +quirks() { +# +# Apply out of tree patches +# +for i in $SRC/kvmfornfv/patches/$1/*.patch +do + if [ -f "$i" ] + then + echo "Applying: $i" + patch -p1 <$i + fi +done +} + +quirks kernel + +cd kernel + +if [ ! -f ${config_file} ] ; then + echo "${0}: ${config_file} does not exist" + exit 1 +fi + +# Workaround build bug on Ubuntu 14.04 +cat <<EOF > arch/x86/boot/install.sh +#!/bin/sh +cp -a -- "\$2" "\$4/vmlinuz-\$1" +EOF + +# Configure the kernel +cp $config_file .config + +make oldconfig </dev/null + +# Build the kernel debs +make-kpkg clean + +fakeroot make-kpkg --initrd --revision=$VERSION kernel_image kernel_headers + +make + +mv /root/kvmfornfv/linux-* /root/kvmfornfv/build_output diff --git a/ci/build_deb/mkcontrol.sh b/ci/build_deb/mkcontrol.sh new file mode 100755 index 000000000..7eb504a0e --- /dev/null +++ b/ci/build_deb/mkcontrol.sh @@ -0,0 +1,8 @@ +#!/bin/bash +echo "Package: qemu" +echo "Version: $1" +echo "Section: base" +echo "Priority: optional" +echo "Architecture: all" +echo "Maintainer: Intel" +echo "Description: control file for qemu debian build on centos" diff --git a/ci/build_deb/qemu_deb_build.sh b/ci/build_deb/qemu_deb_build.sh new file mode 100755 index 000000000..f6d398a36 --- /dev/null +++ b/ci/build_deb/qemu_deb_build.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +qemu_src_dir=qemu +workspace=/root +debbuild_dir=$workspace/debbuild +scripts_dir=ci/build_deb +output_dir="$1" +VERSION=`grep -m 1 "VERSION" ${qemu_src_dir}/config-host.mak | cut -d= -f2-` + +usage () { + echo "usage: ${0} output_dir" + exit 1 +} + +if [[ -z "$@" ]]; then + usage +fi + +if [ ! -d ${output_dir} -o ! -w ${output_dir} ] ; then + echo "${0}: Output directory '${output_dir}' does not exist or cannot \ + be written" + exit 1 +fi + +if [ ! -d ${qemu_src_dir} ] ; then + echo "${0}: Directory '${qemu_src_dir}' does not exist, run this script \ + from the root of kvmfornfv source tree" + exit 1 +fi + +echo +echo "Build" +echo + +qemu_deb_build() { + mkdir -p $debbuild_dir/qemu-$VERSION + cp -r $qemu_src_dir $debbuild_dir/qemu-$VERSION + mkdir -p $debbuild_dir/qemu-$VERSION/DEBIAN + touch control + +#creating control file for debian build. + (cd ${scripts_dir}; ./mkcontrol.sh $VERSION > control) + mv $scripts_dir/control $debbuild_dir/qemu-$VERSION/DEBIAN/control + +#building the qemu debian with control file developed. + dpkg-deb --build $debbuild_dir/qemu-$VERSION + if [ ${?} -ne 0 ] ; then + echo "${0}: qemu build failed" + exit 1 + fi +} + +if [ ! -d ${debbuild_dir} ] ; then + echo "creating debbuild directory" + mkdir -p $debbuild_dir +fi + +qemu_deb_build +latest_qemu_build=`ls -rt $debbuild_dir | tail -1` +cp $debbuild_dir/$latest_qemu_build build_output |