Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
30 results

launch-build-machine-jenkins.sh

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    launch-build-machine-jenkins.sh 7.67 KiB
    #!/bin/bash
    #####################################################
    # File Name: launch-build-machine-jenkins.sh
    #
    # Purpose :
    #
    # Author: Julien Bonjean (julien@bonjean.info)
    #
    # Creation Date: 2009-10-20
    # Last Modified: 2010-04-22 16:42:57 -0400
    #####################################################
    
    set -x
    
    #Check dependencies
    
    # Download the KDE client release script
    if  ! command -v curl ; then
       echo Please install curl
       exit 1
    fi
    # Merge the KDE translation files
    if  ! command -v ruby ; then
       echo Please install ruby
       exit 1
    fi
    # Download the KDE client and scripts
    if  ! command -v git ; then
       echo Please install git
       exit 1
    fi
    # Fetch KDE translations, the gnome client use bzr
    if  ! command -v svn ; then
       echo Please install svn
       exit 1
    fi
    
    
    . `dirname $0`/setenv.sh
    
    IS_RELEASE=
    VERSION_INDEX="1"
    IS_KDE_CLIENT=
    DO_PUSH=1
    DO_LOGGING=1
    DO_UPLOAD=1
    SNAPSHOT_TAG=`date +%Y%m%d`
    TAG_NAME_PREFIX=
    VERSION_NUMBER="1.3.0"
    
    #LAUNCHPAD_PACKAGES=("sflphone-daemon" "sflphone-kde" "sflphone-gnome" "sflphone-plugins" "sflphone-daemon-video" "sflphone-gnome-video")
    LAUNCHPAD_PACKAGES=("sflphone-gnome-video")
    
    echo
    echo "    /***********************\\"
    echo "    | SFLPhone build system |"
    echo "    \\***********************/"
    echo
    
    
    for PARAMETER in $*
    do
            case ${PARAMETER} in
            --help)
                    echo
                    echo "Options :"
                    echo " --skip-push"
                    echo " --skip-upload"
                    echo " --kde-client"
                    echo " --no-logging"
                    echo " --release"
                    echo " --version-index=[1,2,...]"
                    echo
                    exit 0;;
            --skip-push)
                    unset DO_PUSH;;
            --skip-upload)
                    unset DO_UPLOAD;;
            --kde-client)
                    IS_KDE_CLIENT=1;;
            --no-logging)
                    unset DO_LOGGING;;
            --release)
                    IS_RELEASE=1;;
            --version-index=*)
                    VERSION_INDEX=(${PARAMETER##*=});;
            *)
                    echo "Unknown parameter : ${PARAMETER}"
                    exit -1;;
            esac
    done
    
    #########################
    # LAUNCHPAD
    #########################
    
    # change to working directory
    cd ${LAUNCHPAD_DIR}
    
    if [ "$?" -ne "0" ]; then
            echo " !! Cannot cd to launchpad directory"
            exit -1
    fi
    
    # logging
    if [ ${DO_LOGGING} ]; then
    
    	rm -f ${ROOT_DIR}/packaging.log >/dev/null 2>&1
    
    	# open file descriptor
    	exec 3<> ${ROOT_DIR}/packaging.log
    
    	# redirect outputs (stdout & stderr)
    	exec 1>&3
    	exec 2>&3
    fi
    
    if [ ${RELEASE_MODE} ]; then
    	echo "Release mode"
    else
    	echo "Snapshot mode"
    fi
    
    if [ ${IS_KDE_CLIENT} ]; then
    	TAG_NAME_PREFIX="kde."
    fi
    
    #########################
    # COMMON PART
    #########################
    
    cd ${REFERENCE_REPOSITORY}
    
    echo "Update reference sources"
    if [ ${IS_RELEASE} ]; then
            git checkout . && git checkout -f release && git pull
    else
            git checkout . && git checkout -f master && git pull
    fi
    
    echo "Retrieve build info"
    # retrieve info we may need
    if [ ${IS_KDE_CLIENT} ]; then
    	TAG_NAME_PREFIX="kde."
    	LAUNCHPAD_PACKAGES=( "sflphone-kde" )
    fi
    CURRENT_RELEASE_TAG_NAME=`git describe --tags --abbrev=0`
    PREVIOUS_RELEASE_TAG_NAME=`git describe --tags --abbrev=0 ${CURRENT_RELEASE_TAG_NAME}^`
    CURRENT_RELEASE_COMMIT_HASH=`git show --pretty=format:"%H" -s ${CURRENT_RELEASE_TAG_NAME} | tail -n 1`
    PREVIOUS_RELEASE_COMMIT_HASH=`git show --pretty=format:"%H" -s ${PREVIOUS_RELEASE_TAG_NAME} | tail -n 1`
    CURRENT_COMMIT=`git show --pretty=format:"%H"  -s | tail -n 1`
    CURRENT_RELEASE_TYPE=${CURRENT_RELEASE_TAG_NAME##*.}
    PREVIOUS_RELEASE_TYPE=${PREVIOUS_RELEASE_TAG_NAME##*.}
    if [ ${IS_KDE_CLIENT} ]; then
    	CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_TAG_NAME%.*}
    	CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_VERSION#*.}
    	PREVIOUS_VERSION=${PREVIOUS_RELEASE_TAG_NAME%.*}
    	PREVIOUS_VERSION=${PREVIOUS_VERSION#*.}
    else
    	CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_TAG_NAME}
    	PREVIOUS_VERSION=${PREVIOUS_RELEASE_TAG_NAME}
    fi
    
    cd ${LAUNCHPAD_DIR}
    
    COMMIT_HASH_BEGIN=""
    COMMIT_HASH_END=""
    SOFTWARE_VERSION=""
    LAUNCHPAD_CONF_PREFIX=""
    
    if [ ${IS_RELEASE} ]; then
    	SOFTWARE_VERSION="${CURRENT_RELEASE_VERSION}"
    	COMMIT_HASH_BEGIN="${PREVIOUS_RELEASE_COMMIT_HASH}"
    	LAUNCHPAD_CONF_PREFIX="sflphone"
    else
    	SOFTWARE_VERSION="${VERSION_NUMBER}-rc${SNAPSHOT_TAG}"
    	COMMIT_HASH_BEGIN="${CURRENT_RELEASE_COMMIT_HASH}"
    	LAUNCHPAD_CONF_PREFIX="sflphone-nightly"
    fi
    
    VERSION="${SOFTWARE_VERSION}~ppa${VERSION_INDEX}~SYSTEM"
    
    echo "Clean build directory"
    git clean -f -x ${LAUNCHPAD_DIR}/* >/dev/null
    
    get_dir_name() {
        case $1 in
            sflphone-daemon)
            echo daemon
            ;;
            sflphone-daemon-video)
            echo daemon
            ;;
            sflphone-plugins)
            echo plugins
            ;;
            sflphone-gnome)
            echo gnome
            ;;
            sflphone-gnome-video)
            echo gnome
            ;;
            sflphone-kde)
            echo kde
            ;;
            *)
            exit 1
            ;;
        esac
    }
    
    for LAUNCHPAD_PACKAGE in ${LAUNCHPAD_PACKAGES[*]}
    do
    	echo " Package: ${LAUNCHPAD_PACKAGE}"
    
    	echo "  --> Clean old sources"
    	git clean -f -x ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/* >/dev/null
    
    	DEBIAN_DIR="${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/debian"
    
    	echo "  --> Clean debian directory"
    	git checkout ${DEBIAN_DIR}
    
    	echo "  --> Retrieve new sources"
    	DIRNAME=`get_dir_name ${LAUNCHPAD_PACKAGE}`
    	cp -r ${REFERENCE_REPOSITORY}/${DIRNAME}/* ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}
    
    	echo "  --> Update software version number (${SOFTWARE_VERSION})"
    	echo "${SOFTWARE_VERSION}" > ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/VERSION
    
    	echo "  --> Update debian changelog"
    
    cat << END > ${WORKING_DIR}/sfl-git-dch.conf
    WORKING_DIR="${REFERENCE_REPOSITORY}"
    SOFTWARE="${LAUNCHPAD_PACKAGE}"
    VERSION="${VERSION}"
    DISTRIBUTION="SYSTEM"
    CHANGELOG_FILE="${DEBIAN_DIR}/changelog"
    COMMIT_HASH_BEGIN="${COMMIT_HASH_BEGIN}"
    COMMIT_HASH_END="${COMMIT_HASH_END}"
    IS_RELEASE=${IS_RELEASE}
    export DEBFULLNAME="Emmanuel Milou"
    export DEBEMAIL="emmanuel.milou@savoirfairelinux.com"
    export EDITOR="echo"
    END
    
    	${WORKING_DIR}/sfl-git-dch-2.sh ${WORKING_DIR}/sfl-git-dch.conf ${REFERENCE_REPOSITORY}/${DIRNAME}/
    	if [ "$?" -ne "0" ]; then
    		echo "!! Cannot update debian changelogs"
    		exit -1
    	fi
    
    	if [ "${LAUNCHPAD_PACKAGE}"  == "sflphone-kde" ]; then
    		version_kde=$(echo ${VERSION}  | grep -e '[0-9]*\.[0-9.]*' -o | head -n1)
    		sed -i -e "s/Standards-Version: [0-9.A-Za-z]*/Standards-Version: ${version_kde}/" ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/debian/control
    		tar -C ${LAUNCHPAD_DIR}/ -cjf ${LAUNCHPAD_DIR}/sflphone-kde_${version_kde}.orig.tar.bz2  ${LAUNCHPAD_PACKAGE}
    	fi
    
    	rm -f ${WORKING_DIR}/sfl-git-dch.conf >/dev/null 2>&1
    
    	cd ${LAUNCHPAD_DIR}
    
    	cp ${DEBIAN_DIR}/changelog ${DEBIAN_DIR}/changelog.generic
    
    	for LAUNCHPAD_DISTRIBUTION in ${LAUNCHPAD_DISTRIBUTIONS[*]}
    	do
    
    		LOCAL_VERSION="${SOFTWARE_VERSION}~ppa${VERSION_INDEX}~${LAUNCHPAD_DISTRIBUTION}"
    
    		cp ${DEBIAN_DIR}/changelog.generic ${DEBIAN_DIR}/changelog
    
    		sed -i "s/SYSTEM/${LAUNCHPAD_DISTRIBUTION}/g" ${DEBIAN_DIR}/changelog
    
    		cd ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}
    		if [ "${LAUNCHPAD_PACKAGE}"  != "sflphone-kde" ]; then
    			./autogen.sh
    		fi
    		debuild -S -sa -kF5362695
    		cd ${LAUNCHPAD_DIR}
    
    		if [ ${DO_UPLOAD} ] ; then
    			dput -f --debug --no-upload-log -c ${LAUNCHPAD_DIR}/dput.conf ${LAUNCHPAD_CONF_PREFIX}-${LAUNCHPAD_DISTRIBUTION} ${LAUNCHPAD_PACKAGE}_${LOCAL_VERSION}_source.changes
    		fi
    	done
    
    	cp ${DEBIAN_DIR}/changelog.generic ${DEBIAN_DIR}/changelog
    done
    
    # if push is activated
    #if [[ ${DO_PUSH} && ${IS_RELEASE} ]];then
    #	echo " Doing commit"
    #	git commit -m "[#1262] Released ${SOFTWARE_VERSION}" .
    #
    #	echo " Pushing commit"
    #	git push origin release
    #fi
    
    
    # Archive source tarball for Debian maintainer
    . ${WORKING_DIR}/build_tarball.sh ${SOFTWARE_VERSION}
    
    
    # close file descriptor
    exec 3>&-
    
    exit 0