#!/bin/bash # # Common parameter parsing for kvmfornfv scripts # function checking_apex_build() { echo "" commit=`git rev-parse HEAD` echo "commit id: $commit" echo "Checking for presence of apex.conf in the current patch" git diff-tree --no-commit-id --name-only -r ${commit} | grep apex.conf # result=`git show --name-only ${commit} | grep apex.conf` result=`git diff-tree --no-commit-id --name-only -r ${commit} | grep apex.conf` if [ -z "${result}" ]; then echo "Does not include the file apex.conf" apex_build_flag=0 else source $WORKSPACE/ci/apex.conf echo "Includes apex.conf" apex_build_flag=1 fi } function checking_compass_build() { echo "" commit=`git rev-parse HEAD` echo "commit id: $commit" echo "Checking for presence of compass.conf in the current patch" git diff-tree --no-commit-id --name-only -r ${commit} | grep compass.conf result=`git diff-tree --no-commit-id --name-only -r ${commit} | grep compass.conf` if [ -z "${result}" ]; then echo "Does not include the file compass.conf" compass_build_flag=0 else source $WORKSPACE/ci/compass.conf echo "Includes compass.conf" compass_build_flag=1 fi } function usage() { echo "" echo "Usage --> $0 [-p package_type] [-o output_dir] [-h]" echo " package_type : centos/ubuntu/both ; default is centos" echo " output_dir : stores rpm and debian packages" echo " -h : Help section" echo "" } output_dir="" type="" function run() { case $1 in centos) if [ ${apex_build_flag} -eq 0 ];then cd $WORKSPACE/ci/build_rpm sudo docker build -t kvm_rpm . sudo docker run --privileged=true -v $WORKSPACE:/opt/kvmfornfv -t kvm_rpm \ /opt/kvmfornfv/ci/build_interface.sh $1 else cd $WORKSPACE/ci/ echo $output_dir cp $WORKSPACE/ci/build_rpm/Dockerfile . sudo docker build -t kvm_apex . sudo docker run --privileged=true -v $WORKSPACE:/opt/kvmfornfv -t kvm_apex \ /opt/kvmfornfv/ci/installer_build.sh build_output apex fi ;; ubuntu) if [ ${compass_build_flag} -eq 0 ]; then cd $WORKSPACE/ci/build_deb sudo docker build -t kvm_deb . sudo docker run -v $WORKSPACE:/opt/kvmfornfv -t kvm_deb \ /opt/kvmfornfv/ci/build_interface.sh $1 else cd $WORKSPACE/ci/ echo $output_dir cp $WORKSPACE/ci/build_deb/Dockerfile . sudo docker build -t kvm_docker . sudo docker run --privileged=true -v $WORKSPACE:/opt/kvmfornfv -t kvm_docker \ /opt/kvmfornfv/ci/installer_build.sh build_output compass fi ;; *) echo "Not supported system"; exit 1;; esac } function build_package() { choice=$1 case "$choice" in "centos"|"ubuntu") echo "Build $choice Rpms/Debians" run $choice ;; "both") echo "Build $choice Debians and Rpms" run "centos" run "ubuntu" ;; *) echo "Invalid package option" usage exit 1 ;; esac } ## --- Parse command line arguments / parameters --- while getopts ":o:p:h" option; do case $option in p) # package type=$OPTARG ;; o) # output_dir output_dir=$OPTARG ;; :) echo "Option -$OPTARG requires an argument." usage exit 1 ;; h) usage exit 0 ;; *) echo "Unknown option: $OPTARG." usage exit 1 ;; ?) echo "[WARNING] Unknown parameters!!!" echo "Using default values for package generation & output" esac done if [[ -z "$type" ]] then type='centos' fi if [[ -z "$output_dir" ]] then output_dir=$WORKSPACE/build_output fi job_type=`echo $JOB_NAME | cut -d '-' -f 2` echo "" echo "Building for $type package in $output_dir" echo "" checking_compass_build checking_apex_build mkdir -p $output_dir build_package $type # Renaming the rpms in the format kvmfornfv-xxxxxxxx-apex-kernel-4.4.6_rt14.el7.centos.x86_64.rpm if [ ${apex_build_flag} -eq 1 ];then cd ${output_dir} echo "Renaming the rpms" source $WORKSPACE/ci/apex.conf echo "${commit_id}" short_hash=`git rev-parse --short=8 ${commit_id}` echo "$short_hash" rename 's/^/kvmfornfv-'${short_hash}'-apex-/' kernel-* variable=`ls kvmfornfv-* | grep "devel" | awk -F "_" '{print $3}' | awk -F "." '{print $1}'` rename "s/${variable}/centos/" kvmfornfv-* fi # Uploading rpms only for daily job if [ $job_type == "verify" ]; then if [ $type == "centos" ]; then echo "Removing kernel-debuginfo rpm from output_dir" rm -f ${output_dir}/kernel-debug* echo "Checking packages in output_dir" ls -lrth ${output_dir} else echo "Removing debug debian from output_dir" rm -f ${output_dir}/*dbg* echo "Checking packages in output_dir" ls -lrth ${output_dir} fi fi