#!/bin/bash ProjectL=wfc-lic ProjectU=WFC-LIC RelDate=`date +%Y%m%d` #GitRootDir=${HOME}/wfc.git GitRootDir=$(dirname $(dirname $(dirname $(realpath $0)))) SrcRootDir=${GitRootDir}/license.wfc BuildRootDir=${GitRootDir}/license.build.wfc LicenseWorkDir=/opt/lic BuildDockerDir=${BuildRootDir}/debbuild/opt/docker ReleseDir=${BuildRootDir}/release DebBuildDir=${BuildRootDir}/debbuild DebReleseDir=${ReleseDir}/debs usage() { echo "Usage: sh build.sh [jar|srctar|deb] [-g]" exit 1 } SKIP_PRE_GIT_PULL=false # Reorder arguments so that options come first ARGS=() for arg in "$@"; do case $arg in -g) SKIP_PRE_GIT_PULL=true ;; *) ARGS+=("$arg") ;; esac done if SKIP_PRE_GIT_PULL=true; then ARGS+=("-g") fi # Restore positional parameters set -- "${ARGS[@]}" # Process options while getopts "g" opt; do case ${opt} in g ) SKIP_PRE_GIT_PULL=true ;; \? ) usage ;; esac done shift $((OPTIND -1)) pre-git-pull(){ cd ${SrcRootDir} git pull cd ${BuildRootDir} git pull } pre-build-deb(){ if [ ! -d ${ReleseDir}/debs ]; then mkdir -p ${ReleseDir}/debs fi if [ ! -d ${DebBuildDir}/opt/lic ]; then mkdir -p ${DebBuildDir}/opt/lic fi # git update-index --assume-unchanged ${BuildDockerDir}/env/wfc-release } build-jar(){ cd ${SrcRootDir} # git pull mvn clean package -Dmaven.test.skip=true } pre-build-src-tar(){ if [ ! -d ${ReleseDir}/src-tars ]; then mkdir -p ${ReleseDir}/src-tars fi source ${BuildRootDir}/bin/control.sh } clean-jar(){ cd ${SrcRootDir} mvn clean } copy-file-debbuild(){ DocsRootDir=${BuildRootDir}/docs rm -rf ${DebBuildDir}/opt/lic/docker/jar/*.jar cp -rf ${SrcRootDir}/target/wfc-license-server*.jar ${DebBuildDir}/opt/lic/docker/jar/ cp -rf ${DocsRootDir}/*.pdf ${DebBuildDir}/opt/lic/docs/ } # create source tar package create-src-tar(){ SrcTarFileName=${ProjectL}-${RelVersion}-${RelDate}.src.tar.gz echo -n "Begin build source tar package(${SrcTarFileName}) ... " WFCRelativeDir=./wfc.git LicenseSrcDir=${WFCRelativeDir}/license.wfc LicenseBuildDir=${WFCRelativeDir}/license.build.wfc cd ${HOME} tar cvfz ${ReleseDir}/src-tars/${SrcTarFileName} \ --exclude=${LicenseSrcDir}/.git \ --exclude=${LicenseSrcDir}/.vscode \ --exclude=${LicenseSrcDir}/target \ --exclude=${LicenseBuildDir}/.git \ --exclude=${LicenseBuildDir}/.vscode \ --exclude=${LicenseBuildDir}/debbuild/opt/lic/docker/jar/*.jar \ --exclude=${LicenseBuildDir}/debbuild/opt/lic/docs \ --exclude=${LicenseBuildDir}/release \ ${LicenseSrcDir} ${LicenseBuildDir} 1>/dev/null echo "done" } # create deb package create-deb(){ Version=$(grep '^Version:' ${DebBuildDir}/DEBIAN/control | awk '{print $2}') DebPkgFile=${ProjectL}-${Version}-${RelDate}-ub22.deb echo -n "Begin build deb package(${DebPkgFile}) ... " dpkg -b ${DebBuildDir} ${DebReleseDir}/${DebPkgFile} 1>/dev/null echo "done" } case "$1" in "jar") build-jar ;; "deb") if [ "$SKIP_PRE_GIT_PULL" = false ]; then pre-git-pull fi pre-build-deb build-jar copy-file-debbuild create-deb ;; "srctar") if [ "$SKIP_PRE_GIT_PULL" = false ]; then pre-git-pull fi pre-build-src-tar clean-jar create-src-tar # post-build ;; *) usage ;; esac