From 32ae6f747df2b343c892fe7d537c8398cf3581e2 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Fri, 31 May 2024 17:55:30 +0800 Subject: [PATCH] opt: optize build shell for multi-branch --- build.sh | 119 ++++++++++++++++++++++++++++++++--------------------- makepkg.sh | 93 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 makepkg.sh diff --git a/build.sh b/build.sh index 6178c7e..e72cb82 100644 --- a/build.sh +++ b/build.sh @@ -1,27 +1,56 @@ #!/bin/bash -while getopts "m:r:d" option; do +usage() { + echo "Usage: $0 [OPTION] deb|rpm" + echo + echo "Build omc package, option as follow:" + echo " deb|rpm, deb: ubuntu|debian package build by dpkg" + echo " rpm: centos/redhat package, build by rpmbuild" + echo " -r, =build root directory build root directory, default directory is $HOME/local.git" + echo " -d dump SQL from database" + echo +} + +pkgtype="" +new_args=() +# Traverse all parameters +for arg in "$@"; do + if [[ "$arg" == "deb" || "$arg" == "rpm" ]]; then + pkgtype=$arg + else + new_args+=("$arg") # Add non pkgtype parameters to a new parameter list + fi +done + +if [ -z "$pkgtype" ]; then + usage + exit 1 +fi + +# Use a new parameter list +set -- "${new_args[@]}" + +GitLocalRoot=${HOME}/local.git +while getopts "r:d" option; do case $option in - m) - m_arg=$(echo $OPTARG | tr '[:upper:]' '[:lower:]') - ;; r) - r_arg=$OPTARG - ;; + GitLocalRoot=$OPTARG + ;; d) - dumpflag="yes" - ;; + dumpdb="yes" + ;; \?) echo "Invalid option: -$OPTARG" >&2 - ;; + usage + exit 2 + ;; esac done -GitLocalRoot=${HOME}/local.git -if [ -n ${r_arg} ]; then - GitLocalRoot=${r_arg} +if [ ! -d ${GitLocalRoot} ]; then + echo "Not exist directory: ${GitLocalRoot}" + exit 3 fi -echo "GitLocalRoot=${GitLocalRoot}" ProjectL=omc ProjectU=OMC @@ -40,8 +69,6 @@ RpmsDir=${EmsBuildRoot}/rpmbuild/RPMS/ ReleaseDir=${EmsBuildRoot}/release DumpToolDir=${EmsBEDir}/tools/misc -PLATFORM=amd64 -ARMPLATFORM=aarch64 BuildDir=${EmsBuildRoot}/build BuildOMCDir=${BuildDir}/usr/local/omc BuildOMCBinDir=${BuildOMCDir}/bin @@ -77,7 +104,6 @@ DBSQLSrcDir=${EmsBEDir}/database MiscDir=${EmsBEDir}/misc FrontBuildDir=${BuildOMCDir}/htdocs FrontSrcDir=${EmsBEDir}/front -ReleaseDebs=${ReleaseDir}/debs/${PLATFORM} CrontaskSize=27788951 RestagentSize=29525312 BinWriterDir=${HOME}/bin @@ -87,26 +113,19 @@ if [[ ${RpmArch} =~ "x86_64" ]];then elif [[ ${RpmArch} =~ "aarch64" ]];then RelArch=arm64 fi +ReleasePkgDir=${ReleaseDir}/"${pkgtype}"s/${RelArch} -ProcList="restagent crontask sshsvc captrace data2html" -cd $EmsBEDir -for procName in $ProcList;do - cd $EmsBEDir/$procName - echo "Make $procName ..." - make -done - -#Get SQL from database -if [ ${dumpflag} = "yes" ]; then - cd ${DumpToolDir} - chmod +x ${DumpToolDir}/dumpdb.sh - ${DumpToolDir}/dumpdb.sh -fi - -case "$1" in +case "${pkgtype}" in rpm) + ProcList="restagent crontask sshsvc captrace data2html" + cd $EmsBEDir + for procName in $ProcList;do + cd $EmsBEDir/$procName + echo "Make $procName ..." + make + done + cd $EmsBEDir - # make rpm # clear build cache rm -rf ${FrontBuildDir}/front/* @@ -132,8 +151,8 @@ case "$1" in cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/install cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgrade cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgvue3 - #Get SQL from database, recover from git - if [ "$2" = "db" ]; then + #Get SQL from database, overwrite from git + if [ "$dumpdb" = "yes" ]; then cd ${DumpToolDir} chmod +x ${DumpToolDir}/dumpsql.sh ${DumpToolDir}/dumpsql.sh @@ -150,13 +169,21 @@ case "$1" in cd ${RpmBuildDir} rpmbuild -bb -D "_topdir ${RpmBuildDir}" ${RpmBuildDir}/SPECS/omc.spec - mv -f $RpmsDir/$RpmArch/$RpmPkgName $ReleaseDir/"$1"s/$RelArch/$RpmPkgRename - cd $ReleaseDir/"$1"s/$RelArch + mv -f $RpmsDir/$RpmArch/$RpmPkgName ${ReleasePkgDir}/$RpmPkgRename + cd ${ReleasePkgDir} rm -f omc-md5sum.txt # rpm --addsign *.rpm md5sum $RpmPkgRename >omc-md5sum.txt ;; deb) + ProcList="restagent crontask sshsvc captrace data2html" + cd $EmsBEDir + for procName in $ProcList;do + cd $EmsBEDir/$procName + echo "Make $procName ..." + make + done + VersionID=`grep VERSION_ID /etc/os-release` if [[ ${VersionID} =~ 'VERSION_ID="22.04"' ]]; then DebBuildDir=${DebBuild2204Dir} @@ -190,8 +217,8 @@ case "$1" in cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/install cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgrade cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgvue3 - #Get SQL from database, recover from git - if [ "$2" = "db" ]; then + #Get SQL from database, overwrite from git + if [ "${dumpdb}" = "yes" ]; then cd ${DumpToolDir} chmod +x ${DumpToolDir}/dumpsql.sh ${DumpToolDir}/dumpsql.sh @@ -208,19 +235,15 @@ case "$1" in chmod +x ${DebBuildDir}/usr/local/omc/bin/* sed -i "s/YYYYMMDD/${RelDate}/g" ${DebBuildDir}/DEBIAN/control perl -0777 -i -pe 's/ne:\n user: root/ne:\n user: agtuser/g' ${DebBuildDir}/usr/local/omc/etc/default/restconf.yaml - dpkg -b ${DebBuildDir} ${ReleaseDebs}/${DebPkgFile} + dpkg -b ${DebBuildDir} ${ReleasePkgDir}/${DebPkgFile} - cd $ReleaseDir/"$1"s/$RelArch + cd ${ReleasePkgDir} rm -f omc-md5sum.txt # rpm --addsign *.rpm - md5sum $DebPkgName >omc-md5sum.txt + md5sum ${DebPkgName} >omc-md5sum.txt ;; *) - echo "Usage: $0 rpm|deb -r root directory -d" - echo - echo "Build omc package" - echo "rpm|deb, rpm rpm package / ubuntu|debian package" - echo "-r, =root directory build root directory, default directory is $HOME/local.git" - echo "-d dump SQL from database" + usage + exit 4 ;; esac diff --git a/makepkg.sh b/makepkg.sh new file mode 100644 index 0000000..3706be5 --- /dev/null +++ b/makepkg.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +usage() { + echo "Usage: $0 deb|rpm [option]..." + echo + echo "Make omc package, option as follow:" + echo " deb|rpm, deb: ubuntu|debian package build by dpkg" + echo " rpm: centos/redhat package, build by rpmbuild" + echo " -r, =build root directory build root directory, default directory is $HOME/local.git" + echo " -d dump SQL from database" + echo " -m, =be|fe|all be: only process back-end code, default if non input" + echo " fe: only process front-end code" + echo " all: process all include be and fe" +} + +pkgtype="" +new_args=() +be_args=() +# Traverse all parameters +for arg in "$@"; do + if [[ "$arg" == "deb" || "$arg" == "rpm" ]]; then + pkgtype=$arg + be_args+=("$arg") + else + new_args+=("$arg") # Add non pkgtype parameters to a new parameter list + fi +done + +if [ -z "$pkgtype" ]; then + usage + exit 1 +fi + +# Use a new parameter list +set -- "${new_args[@]}" + +rootdir=${HOME}/local.git +m_arg="*" +while getopts "m:r:d" option; do + case $option in + m) + m_arg=$(echo $OPTARG | tr '[:upper:]' '[:lower:]') + ;; + r) + rootdir=$OPTARG + be_args+=("-r ${rootdir}") + ;; + d) + be_args+=("-d") + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + usage + exit 2 + ;; + esac +done + +if [ ! -d ${rootdir} ]; then + echo "Not exist directory: ${rootdir}" + exit 3 +fi + +bedir=${rootdir}/be.ems +fedir=${rootdir}/fe.ems.vue3 +builddir=${rootdir}/build.ems + +makefe() { + cd ${fedir} + git pull + npm install --registry https://registry.npmmirror.com + npm run build +} + +makebe() { + cd ${builddir} + #chmod +x mkpkg.sh + chmod +x build.sh + ./build.sh ${be_args[@]} +} + +case "${m_arg}" in + fe) + makefe + ;; + all) + makefe + makebe + ;; + be | *) + makebe + ;; +esac \ No newline at end of file