250 lines
8.6 KiB
Bash
250 lines
8.6 KiB
Bash
#!/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.2407.4
|
|
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
|