1
0

opt: optize build shell for multi-branch

This commit is contained in:
2024-05-31 17:55:30 +08:00
parent 93e3e633d3
commit 32ae6f747d
2 changed files with 164 additions and 48 deletions

107
build.sh
View File

@@ -1,27 +1,56 @@
#!/bin/bash #!/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 case $option in
m)
m_arg=$(echo $OPTARG | tr '[:upper:]' '[:lower:]')
;;
r) r)
r_arg=$OPTARG GitLocalRoot=$OPTARG
;; ;;
d) d)
dumpflag="yes" dumpdb="yes"
;; ;;
\?) \?)
echo "Invalid option: -$OPTARG" >&2 echo "Invalid option: -$OPTARG" >&2
usage
exit 2
;; ;;
esac esac
done done
GitLocalRoot=${HOME}/local.git if [ ! -d ${GitLocalRoot} ]; then
if [ -n ${r_arg} ]; then echo "Not exist directory: ${GitLocalRoot}"
GitLocalRoot=${r_arg} exit 3
fi fi
echo "GitLocalRoot=${GitLocalRoot}"
ProjectL=omc ProjectL=omc
ProjectU=OMC ProjectU=OMC
@@ -40,8 +69,6 @@ RpmsDir=${EmsBuildRoot}/rpmbuild/RPMS/
ReleaseDir=${EmsBuildRoot}/release ReleaseDir=${EmsBuildRoot}/release
DumpToolDir=${EmsBEDir}/tools/misc DumpToolDir=${EmsBEDir}/tools/misc
PLATFORM=amd64
ARMPLATFORM=aarch64
BuildDir=${EmsBuildRoot}/build BuildDir=${EmsBuildRoot}/build
BuildOMCDir=${BuildDir}/usr/local/omc BuildOMCDir=${BuildDir}/usr/local/omc
BuildOMCBinDir=${BuildOMCDir}/bin BuildOMCBinDir=${BuildOMCDir}/bin
@@ -77,7 +104,6 @@ DBSQLSrcDir=${EmsBEDir}/database
MiscDir=${EmsBEDir}/misc MiscDir=${EmsBEDir}/misc
FrontBuildDir=${BuildOMCDir}/htdocs FrontBuildDir=${BuildOMCDir}/htdocs
FrontSrcDir=${EmsBEDir}/front FrontSrcDir=${EmsBEDir}/front
ReleaseDebs=${ReleaseDir}/debs/${PLATFORM}
CrontaskSize=27788951 CrontaskSize=27788951
RestagentSize=29525312 RestagentSize=29525312
BinWriterDir=${HOME}/bin BinWriterDir=${HOME}/bin
@@ -87,26 +113,19 @@ if [[ ${RpmArch} =~ "x86_64" ]];then
elif [[ ${RpmArch} =~ "aarch64" ]];then elif [[ ${RpmArch} =~ "aarch64" ]];then
RelArch=arm64 RelArch=arm64
fi fi
ReleasePkgDir=${ReleaseDir}/"${pkgtype}"s/${RelArch}
ProcList="restagent crontask sshsvc captrace data2html" case "${pkgtype}" in
cd $EmsBEDir rpm)
for procName in $ProcList;do ProcList="restagent crontask sshsvc captrace data2html"
cd $EmsBEDir
for procName in $ProcList;do
cd $EmsBEDir/$procName cd $EmsBEDir/$procName
echo "Make $procName ..." echo "Make $procName ..."
make make
done done
#Get SQL from database
if [ ${dumpflag} = "yes" ]; then
cd ${DumpToolDir}
chmod +x ${DumpToolDir}/dumpdb.sh
${DumpToolDir}/dumpdb.sh
fi
case "$1" in
rpm)
cd $EmsBEDir cd $EmsBEDir
# make rpm # make rpm
# clear build cache # clear build cache
rm -rf ${FrontBuildDir}/front/* 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/install
cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgrade cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgrade
cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgvue3 cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgvue3
#Get SQL from database, recover from git #Get SQL from database, overwrite from git
if [ "$2" = "db" ]; then if [ "$dumpdb" = "yes" ]; then
cd ${DumpToolDir} cd ${DumpToolDir}
chmod +x ${DumpToolDir}/dumpsql.sh chmod +x ${DumpToolDir}/dumpsql.sh
${DumpToolDir}/dumpsql.sh ${DumpToolDir}/dumpsql.sh
@@ -150,13 +169,21 @@ case "$1" in
cd ${RpmBuildDir} cd ${RpmBuildDir}
rpmbuild -bb -D "_topdir ${RpmBuildDir}" ${RpmBuildDir}/SPECS/omc.spec rpmbuild -bb -D "_topdir ${RpmBuildDir}" ${RpmBuildDir}/SPECS/omc.spec
mv -f $RpmsDir/$RpmArch/$RpmPkgName $ReleaseDir/"$1"s/$RelArch/$RpmPkgRename mv -f $RpmsDir/$RpmArch/$RpmPkgName ${ReleasePkgDir}/$RpmPkgRename
cd $ReleaseDir/"$1"s/$RelArch cd ${ReleasePkgDir}
rm -f omc-md5sum.txt rm -f omc-md5sum.txt
# rpm --addsign *.rpm # rpm --addsign *.rpm
md5sum $RpmPkgRename >omc-md5sum.txt md5sum $RpmPkgRename >omc-md5sum.txt
;; ;;
deb) 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` VersionID=`grep VERSION_ID /etc/os-release`
if [[ ${VersionID} =~ 'VERSION_ID="22.04"' ]]; then if [[ ${VersionID} =~ 'VERSION_ID="22.04"' ]]; then
DebBuildDir=${DebBuild2204Dir} DebBuildDir=${DebBuild2204Dir}
@@ -190,8 +217,8 @@ case "$1" in
cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/install cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/install
cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgrade cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgrade
cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgvue3 cp -rf ${BuildOMCEtcDir}/db/common/* ${BuildOMCEtcDir}/db/upgvue3
#Get SQL from database, recover from git #Get SQL from database, overwrite from git
if [ "$2" = "db" ]; then if [ "${dumpdb}" = "yes" ]; then
cd ${DumpToolDir} cd ${DumpToolDir}
chmod +x ${DumpToolDir}/dumpsql.sh chmod +x ${DumpToolDir}/dumpsql.sh
${DumpToolDir}/dumpsql.sh ${DumpToolDir}/dumpsql.sh
@@ -208,19 +235,15 @@ case "$1" in
chmod +x ${DebBuildDir}/usr/local/omc/bin/* chmod +x ${DebBuildDir}/usr/local/omc/bin/*
sed -i "s/YYYYMMDD/${RelDate}/g" ${DebBuildDir}/DEBIAN/control 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 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 rm -f omc-md5sum.txt
# rpm --addsign *.rpm # rpm --addsign *.rpm
md5sum $DebPkgName >omc-md5sum.txt md5sum ${DebPkgName} >omc-md5sum.txt
;; ;;
*) *)
echo "Usage: $0 rpm|deb -r root directory -d" usage
echo exit 4
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"
;; ;;
esac esac

93
makepkg.sh Normal file
View File

@@ -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