359 lines
12 KiB
Bash
Executable File
359 lines
12 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
usage() {
|
|
echo "Usage: $0 [OPTION] deb|badeb|rpm"
|
|
echo
|
|
echo "Build omc package, option as follow:"
|
|
echo " deb|badeb|rpm, deb: ubuntu|debian package build by dpkg"
|
|
echo " badeb: 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/omc.git"
|
|
echo " -d dump SQL from database"
|
|
echo
|
|
}
|
|
|
|
pkgtype=""
|
|
new_args=()
|
|
# Traverse all parameters
|
|
for arg in "$@"; do
|
|
if [[ "$arg" == "deb" || "$arg" == "badeb" || "$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}/omc.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.2503.6
|
|
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
|
|
ProjectTag=""
|
|
|
|
BuildDir=${EmsBuildRoot}/build
|
|
CustomizedDir=${EmsBuildRoot}/customized
|
|
BuildOMCDir=${BuildDir}/usr/local/omc
|
|
BuildOMCBinDir=${BuildOMCDir}/bin
|
|
BuildOMCEtcDir=${BuildOMCDir}/etc
|
|
BuildLibDir=${BuildDir}/lib
|
|
BuildLibSystemDir=${BuildLibDir}/systemd/system
|
|
DebBuildDir=${EmsBuildRoot}/debbuild
|
|
DebBuildOMCDir=${EmsBuildRoot}/debbuild/usr/local/omc
|
|
DebFEBuildDir=${DebBuildOMCDir}/htdocs
|
|
DebBuild2204Dir=${EmsBuildRoot}/debbuild/22.04
|
|
DebBuild2204OMCDir=${EmsBuildRoot}/debbuild/22.04/usr/local/omc
|
|
DebFEBuild2204Dir=${DebBuild2204OMCDir}/htdocs
|
|
RpmBuildDir=${EmsBuildRoot}/rpmbuild
|
|
RpmBuildOMCDir=${RpmBuildDir}/BUILD/usr/local/omc
|
|
RpmFEBuildDir=${RpmBuildOMCDir}/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
|
|
SshSvcBin=sshsvc
|
|
RestagentDir=${EmsBEDir}/${RESTAGENT}
|
|
SshSvcDir=${EmsBEDir}/${SshSvcBin}
|
|
DBSQLSrcDir=${EmsBEDir}/database
|
|
MiscDir=${EmsBEDir}/misc
|
|
FrontBuildDir=${BuildOMCDir}/htdocs
|
|
FrontSrcDir=${EmsBEDir}/front
|
|
BinWriterDir=${HOME}/bin
|
|
|
|
# Get the output of uname -a
|
|
UnameOutput=$(uname -a)
|
|
|
|
# Extract hardware architecture
|
|
if [[ $UnameOutput =~ "x86_64" ]]; then
|
|
RelArch=amd64
|
|
RpmArch=x86_64
|
|
elif [[ $UnameOutput =~ "aarch64" ]]; then
|
|
RelArch=arm64
|
|
RpmArch=aarch64
|
|
else
|
|
echo "Unsupported hardware architecture"
|
|
exit 1
|
|
fi
|
|
|
|
get_os_info() {
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
echo $ID
|
|
else
|
|
echo "unknown"
|
|
fi
|
|
}
|
|
|
|
get_os_version() {
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
echo $VERSION_ID
|
|
else
|
|
echo "unknown"
|
|
fi
|
|
}
|
|
|
|
OSVersion=$(get_os_version)
|
|
case $(get_os_info) in
|
|
ubuntu|debian)
|
|
ptype=deb
|
|
if [[ "$OSVersion" == "22.04" ]]; then
|
|
RelOS=ub22
|
|
DebBuildDir=${DebBuild2204Dir}
|
|
DebBuildOMCDir=${DebBuild2204OMCDir}
|
|
DebFEBuildDir=${DebFEBuild2204Dir}
|
|
elif [[ "$OSVersion" == "18.04" ]]; then
|
|
RelOS=ub18
|
|
else
|
|
echo "Unsupported Ubuntu version: $OSVersion"
|
|
exit 1
|
|
fi
|
|
;;
|
|
centos|rhel)
|
|
ptype=rpm
|
|
RelOS=ct8
|
|
RpmPkgRename=${ProjectL}-r${RelVer}-${RelOS}-${RelArch}.${ptype}
|
|
;;
|
|
openEuler)
|
|
ptype=rpm
|
|
RelOS=oe20
|
|
RpmPkgName=${ProjectL}-${RelVer}.${RpmArch}.${ptype}
|
|
RpmPkgRename=${ProjectL}-r${RelVer}-${RelOS}-${RelArch}.${ptype}
|
|
;;
|
|
kylin|anolis)
|
|
ptype=rpm
|
|
RelOS=ky
|
|
RpmPkgName=${ProjectL}-${RelVer}.${RpmArch}.${ptype}
|
|
RpmPkgRename=${ProjectL}-r${RelVer}-${RelOS}-${RelArch}.${ptype}
|
|
;;
|
|
*)
|
|
echo "Unsupported OS"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "${pkgtype}" in
|
|
rpm)
|
|
echo "Begin to make ${pkgtype} package ======>"
|
|
ReleasePkgDir=${ReleaseDir}/rpms/${RelArch}
|
|
ProcList="restagent sshsvc"
|
|
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 ${SshSvcDir}/${SshSvcBin} ${BuildOMCBinDir}
|
|
|
|
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
|
|
#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}/*
|
|
cp -rf ${BuildDir}/* ${RpmBuildDir}/BUILD/
|
|
cp -rf ${CustomizedDir}/agt.d ${RpmBuildOMCDir}/static
|
|
cp -rf ${CustomizedDir}/omc.d ${RpmBuildOMCDir}/static
|
|
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
|
|
echo "Finish to make ${pkgtype} package <======"
|
|
;;
|
|
deb)
|
|
echo "Begin to make ${pkgtype} package ======>"
|
|
ReleasePkgDir=${ReleaseDir}/debs/${RelArch}
|
|
ProcList="restagent sshsvc"
|
|
cd $EmsBEDir
|
|
for procName in $ProcList;do
|
|
cd $EmsBEDir/$procName
|
|
echo "Make $procName ..."
|
|
make
|
|
done
|
|
|
|
DebPkgFile=${ProjectL}-r${RelVer}-${RelOS}-${RelArch}.${ptype}
|
|
if [ ! $ProjectTag = "" ]; then
|
|
DebPkgFile=${ProjectL}-r${RelVer}-${RelOS}-${RelArch}-${ProjectTag}.${ptype}
|
|
fi
|
|
|
|
cd ${EmsBEDir}
|
|
|
|
#make deb
|
|
# clear build cache
|
|
rm -rf ${FrontBuildDir}/front/*
|
|
rm -rf ${DebFEBuildDir}/front/*
|
|
rm -rf ${DebBuildDir}/usr/local/omc/etc/db/*
|
|
rm -rf ${DebBuildOMCDir}/static/*
|
|
|
|
cp -rf ${RestagentDir}/${RESTAGENT} ${BuildOMCBinDir}
|
|
cp -rf ${SshSvcDir}/${SshSvcBin} ${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
|
|
#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 ${CustomizedDir}/agt.d ${DebBuildOMCDir}/static
|
|
cp -rf ${CustomizedDir}/omc.d ${DebBuildOMCDir}/static
|
|
#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
|
|
sed -i "s/Architecture: amd64/Architecture: ${RelArch}/g" ${DebBuildDir}/DEBIAN/control
|
|
perl -0777 -i -pe 's/ne:\n user: root/ne:\n user: omcuser/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
|
|
echo "Finish to make ${pkgtype} package <======="
|
|
;;
|
|
badeb)
|
|
echo "Begin to make ${pkgtype} package ======>"
|
|
ReleasePkgDir=${ReleaseDir}/debs/${RelArch}
|
|
ProcList="restagent sshsvc"
|
|
cd $EmsBEDir
|
|
for procName in $ProcList;do
|
|
cd $EmsBEDir/$procName
|
|
echo "Make $procName ..."
|
|
make
|
|
done
|
|
|
|
DebPkgFile=${ProjectL}-r${RelVer}-${RelOS}-${RelArch}-ba.deb
|
|
|
|
cd ${EmsBEDir}
|
|
|
|
#make deb
|
|
# clear build cache
|
|
rm -rf ${FrontBuildDir}/front/*
|
|
rm -rf ${DebFEBuildDir}/front/*
|
|
rm -rf ${DebBuildDir}/usr/local/omc/etc/db/*
|
|
rm -rf ${DebBuildOMCDir}/static/*
|
|
|
|
cp -rf ${RestagentDir}/${RESTAGENT} ${BuildOMCBinDir}
|
|
cp -rf ${SshSvcDir}/${SshSvcBin} ${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
|
|
|
|
#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 ${CustomizedDir}/ba.d ${DebBuildOMCDir}/static
|
|
# replace Chinese character
|
|
find "${DebBuildOMCDir}/etc/db" -type f -name '*.sql' -exec sed -i 's/[一-龥()“”,。?!]~·]//g' {} +
|
|
echo "Replace all chinese character."
|
|
chmod +x ${DebBuildDir}/usr/local/omc/bin
|
|
sed -i "s/YYYYMMDD/${RelDate}/g" ${DebBuildDir}/DEBIAN/control
|
|
sed -i "s/Architecture: amd64/Architecture: ${RelArch}/g" ${DebBuildDir}/DEBIAN/control
|
|
perl -0777 -i -pe 's/ne:\n user: root/ne:\n user: omcuser/g' ${DebBuildDir}/usr/local/omc/etc/default/restconf.yaml
|
|
dpkg -b ${DebBuildDir} ${ReleasePkgDir}/${DebPkgFile}
|
|
|
|
cd ${ReleasePkgDir}
|
|
rm -f omc-md5sum.txt
|
|
md5sum ${DebPkgName} >omc-md5sum.txt
|
|
echo "Finish to make ${pkgtype} package <======"
|
|
;;
|
|
*)
|
|
usage
|
|
exit 4
|
|
;;
|
|
esac
|