#!/bin/bash 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 r) GitLocalRoot=$OPTARG ;; d) dumpdb="yes" ;; \?) echo "Invalid option: -$OPTARG" >&2 usage exit 2 ;; esac done if [ ! -d ${GitLocalRoot} ]; then echo "Not exist directory: ${GitLocalRoot}" exit 3 fi ProjectL=omc ProjectU=OMC PROJECT=${ProjectL} VERSION=2.2406.2 RelDate=`date +%Y%m%d` RelVer=${VERSION}-${RelDate} Ky10Arch=ky10.aarch64 RpmPkgName=${ProjectL}-${RelVer}.ky10.aarch64.rpm RpmPkgRename=${ProjectL}-r${RelVer}-ky10.rpm DebPkgName=${ProjectL}-r${RelVer}-ub*.deb EmsBEDir=${GitLocalRoot}/be.ems EmsBuildRoot=${GitLocalRoot}/build.ems RpmArch=`arch` RpmsDir=${EmsBuildRoot}/rpmbuild/RPMS/ ReleaseDir=${EmsBuildRoot}/release DumpToolDir=${EmsBEDir}/tools/misc BuildDir=${EmsBuildRoot}/build BuildOMCDir=${BuildDir}/usr/local/omc BuildOMCBinDir=${BuildOMCDir}/bin BuildOMCEtcDir=${BuildOMCDir}/etc BuildLibDir=${BuildDir}/lib BuildLibSystemDir=${BuildLibDir}/systemd/system DebBuildDir=${EmsBuildRoot}/debbuild DebFEBuildDir=${EmsBuildRoot}/debbuild/usr/local/omc/htdocs DebBuild2204Dir=${EmsBuildRoot}/debbuild/22.04 DebFEBuild2204Dir=${EmsBuildRoot}/debbuild/22.04/usr/local/omc/htdocs RpmBuildDir=${EmsBuildRoot}/rpmbuild RpmFEBuildDir=${RpmBuildDir}/BUILD/usr/local/omc/htdocs OmcInstallDir=/usr/local/omc ConfigEtcDir=${EmsBEDir}/config/etc ConfigSystemdDir=${EmsBEDir}/config/systemd EmsFEDir=${GitLocalRoot}/fe.ems EmsFEVue3Dir=${GitLocalRoot}/fe.ems.vue3/dist LibDir=${EmsBEDir}/lib RESTAGENT=restagent CRONTASK=crontask SshSvcBin=sshsvc CapTraceBin=captrace Data2htmlBin=data2html NBI_ALARM=nbi_alarm NBI_AGENT=nbi_agent AAAA_AGENT=4a_agent RestagentDir=${EmsBEDir}/${RESTAGENT} CrontaskDir=${EmsBEDir}/${CRONTASK} SshSvcDir=${EmsBEDir}/${SshSvcBin} CapTraceDir=${EmsBEDir}/${CapTraceBin} Data2htmlDir=${EmsBEDir}/${Data2htmlBin} DBSQLSrcDir=${EmsBEDir}/database MiscDir=${EmsBEDir}/misc FrontBuildDir=${BuildOMCDir}/htdocs FrontSrcDir=${EmsBEDir}/front CrontaskSize=27788951 RestagentSize=29525312 BinWriterDir=${HOME}/bin if [[ ${RpmArch} =~ "x86_64" ]];then RelArch=amd64 elif [[ ${RpmArch} =~ "aarch64" ]];then RelArch=arm64 fi ReleasePkgDir=${ReleaseDir}/"${pkgtype}"s/${RelArch} 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/* rm -rf ${RpmFEBuildDir}/front/* rm -rf ${RpmBuildDir}/BUILD/usr/local/omc/etc/db/* cp -rf ${RestagentDir}/${RESTAGENT} ${BuildOMCBinDir} cp -rf ${CrontaskDir}/${CRONTASK} ${BuildOMCBinDir} cp -rf ${SshSvcDir}/${SshSvcBin} ${BuildOMCBinDir} cp -rf ${CapTraceDir}/${CapTraceBin} ${BuildOMCBinDir} cp -rf ${Data2htmlDir}/${Data2htmlBin} ${BuildOMCBinDir} # ${BinWriterDir}/binWriter ${BuildOMCBinDir}/${RESTAGENT} ${RestagentSize} # ${BinWriterDir}/binWriter ${BuildOMCBinDir}/${CRONTASK} ${CrontaskSize} # cp -rf ${MiscDir}/ne-hosts ${BuildOMCBinDir} # cp -rf ./nbi/${NBI_ALARM}/bin/${NBI_ALARM} ${BinDir2} # cp -rf ./nbi/${NBI_AGENT}/bin/${NBI_AGENT} ${BinDir2} # cp -rf ./${4A_AGENT}/bin/${4A_AGENT} ${BinDir2} cp -rf ${MiscDir}/* ${BuildOMCBinDir} # rm -rf ${BinDir2}/ne-hosts cp -rf ${ConfigEtcDir}/* ${BuildOMCEtcDir} rm -rf ${BuildOMCEtcDir}/db/* cp -rf ${DBSQLSrcDir}/* ${BuildOMCEtcDir}/db/ 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, overwrite from git if [ "$dumpdb" = "yes" ]; then cd ${DumpToolDir} chmod +x ${DumpToolDir}/dumpsql.sh ${DumpToolDir}/dumpsql.sh fi cp -rf ${ConfigSystemdDir}/* ${BuildLibSystemDir} #unzip ${FrontSrcDir}/front.zip -d ${FrontBuildDir} >/dev/null mkdir -p ${FrontBuildDir}/front cp -rf ${EmsFEVue3Dir}/* ${FrontBuildDir}/front >/dev/null chmod 755 ${BuildOMCBinDir}/* # chmod 755 ${BinDir2}/* cp -rf ${BuildDir}/* ${RpmBuildDir}/BUILD/ #cp -rf ${BuildDir}/nginx ${RpmBuildDir}/BUILD/etc/ #cp -rf ${BuildDir}/systemd ${RpmBuildDir}/BUILD/lib/ cd ${RpmBuildDir} rpmbuild -bb -D "_topdir ${RpmBuildDir}" ${RpmBuildDir}/SPECS/omc.spec 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} DebFEBuildDir=${DebFEBuild2204Dir} #DebPkgFile=${PROJECT}-${VERSION}-22.04-${Release).${PLATFORM).deb DebPkgFile=${PROJECT}-r${VERSION}-${RelDate}-ub22.deb elif [[ ${VersionID} =~ 'VERSION_ID="18.04"' ]]; then DebPkgFile=${PROJECT}-r${VERSION}-${RelDate}-ub18.deb else echo "Invalid OS release: ${VersionID}" exit 1 fi cd ${EmsBEDir} #make deb # clear build cache rm -rf ${FrontBuildDir}/front/* rm -rf ${DebFEBuildDir}/front/* rm -rf ${DebBuildDir}/usr/local/omc/etc/db/* cp -rf ${RestagentDir}/${RESTAGENT} ${BuildOMCBinDir} cp -rf ${CrontaskDir}/${CRONTASK} ${BuildOMCBinDir} cp -rf ${SshSvcDir}/${SshSvcBin} ${BuildOMCBinDir} cp -rf ${CapTraceDir}/${CapTraceBin} ${BuildOMCBinDir} cp -rf ${Data2htmlDir}/${Data2htmlBin} ${BuildOMCBinDir} cp -rf ${MiscDir}/* ${BuildOMCBinDir} cp -rf ${ConfigEtcDir}/* ${BuildOMCEtcDir} rm -rf ${BuildOMCEtcDir}/db/* cp -rf ${DBSQLSrcDir}/* ${BuildOMCEtcDir}/db/ 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, overwrite from git if [ "${dumpdb}" = "yes" ]; then cd ${DumpToolDir} chmod +x ${DumpToolDir}/dumpsql.sh ${DumpToolDir}/dumpsql.sh fi cp -rf ${ConfigSystemdDir}/* ${BuildLibSystemDir} cp -rf ${EmsFEVue3Dir}/* ${FrontBuildDir}/front >/dev/null chmod 755 ${BuildOMCBinDir}/* chmod 755 ${DebBuildDir}/DEBIAN/preinst chmod 755 ${DebBuildDir}/DEBIAN/postinst chmod 755 ${DebBuildDir}/DEBIAN/postrm cp -rf ${BuildDir}/* ${DebBuildDir}/ #cp -rf ${BuildDir}/nginx/* ${DebBuildDir}/etc/nginx/conf.d #cp -rf ${BuildDir}/systemd/*.service ${DebBuildDir}/lib/systemd/system/ 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} ${ReleasePkgDir}/${DebPkgFile} cd ${ReleasePkgDir} rm -f omc-md5sum.txt # rpm --addsign *.rpm md5sum ${DebPkgName} >omc-md5sum.txt ;; *) usage exit 4 ;; esac