From a208cc75d46dc09014f2af1c3917344a2bab3f6c Mon Sep 17 00:00:00 2001 From: zhangsz Date: Wed, 19 Feb 2025 14:38:52 +0800 Subject: [PATCH] feat: support build deb --- .gitignore | 8 ++- bin/build.sh | 34 +++++++-- build/bin/wfcsetup.sh | 9 +-- build/docker/compose/docker-compose.yml | 2 +- debbuild/DEBIAN/control | 5 +- debbuild/DEBIAN/postinst | 92 ++----------------------- debbuild/DEBIAN/postrm | 21 +----- debbuild/DEBIAN/preinst | 16 ++--- debbuild/DEBIAN/prerm | 7 ++ 9 files changed, 63 insertions(+), 131 deletions(-) mode change 100644 => 100755 debbuild/DEBIAN/postinst mode change 100644 => 100755 debbuild/DEBIAN/postrm mode change 100644 => 100755 debbuild/DEBIAN/preinst create mode 100755 debbuild/DEBIAN/prerm diff --git a/.gitignore b/.gitignore index 213d56f..15e2f3f 100644 --- a/.gitignore +++ b/.gitignore @@ -86,4 +86,10 @@ yarn.lock # release release/debs/*.deb release/tars/*.tar.gz -release/src-tars/*.tar.gz \ No newline at end of file +release/src-tars/*.tar.gz +debbuild +!debbuild/DEBIAN/control +!debbuild/DEBIAN/postinst +!debbuild/DEBIAN/preinst +!debbuild/DEBIAN/postrm +!debbuild/DEBIAN/prerm \ No newline at end of file diff --git a/bin/build.sh b/bin/build.sh index 1e34347..928575d 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -12,6 +12,12 @@ BuildRootDir=${GitRootDir}/build.wfc WFCWorkDir=/opt/wfc BuildDockerDir=${BuildRootDir}/build/docker ReleseDir=${BuildRootDir}/release +SystemdDir=${BuildRootDir}/build/systemd/system + +DebBuildDir=${BuildRootDir}/debbuild +DebReleseDir=${ReleseDir}/debs +DebSystemdDir=${DebBuildDir}/etc/systemd/system + TmpDir=${BuildRootDir}/tmp TmpEnvFile=${TmpDir}/.env.tmp @@ -58,9 +64,7 @@ pre-build-deb(){ if [ ! -d ${ReleseDir}/debs ]; then mkdir -p ${ReleseDir}/debs fi - if [ -f ${BuildDockerDir}/.env ]; then - mv -f ${BuildDockerDir}/.env ${TmpEnvFile} - fi + # source ${BuildRootDir}/bin/control.sh } build-extras(){ @@ -111,6 +115,20 @@ copy-file(){ cp -f ${BuildRootDir}/bin/printJarVer.class ${BuildRootDir}/build/bin/ } +copy-file-debbuild(){ + rm -rf ${DebBuildDir}/opt/wfc/* + cp -rf ${BuildRootDir}/build/bin/ ${DebBuildDir}/opt/wfc + cp -rf ${BuildRootDir}/build/docker/ ${DebBuildDir}/opt/wfc + cp -rf ${BuildRootDir}/build/systemd/ ${DebBuildDir}/opt/wfc + if [ -f ${DebBuildDir}/opt/wfc/docker/.env ]; then + rm ${DebBuildDir}/opt/wfc/docker/.env + fi + cp -rf ${SystemdDir}/* ${DebSystemdDir}/ + chmod 755 ${DebBuildDir}/DEBIAN/preinst + chmod 755 ${DebBuildDir}/DEBIAN/postinst + chmod 755 ${DebBuildDir}/DEBIAN/postrm +} + # create tar package create-tar(){ TarFileName=${ProjectL}-${RelVersion}-${RelDate}.tar.gz @@ -162,7 +180,10 @@ create-src-tar(){ # create deb package create-deb(){ - echo -n "Begin build deb package ... " + Version=$(grep '^Version:' ${DebBuildDir}/DEBIAN/control | awk '{print $2}') + DebPkgFile=${ProjectL}-${Version}-${RelDate}-ub22.deb + echo -n "Begin build deb package(${DebPkgFile}) ... " + dpkg -b ${DebBuildDir} ${DebReleseDir}/${DebPkgFile} 1>/dev/null echo "done" } @@ -201,11 +222,12 @@ case "$1" in if [ "$SKIP_PRE_GIT_PULL" = false ]; then pre-git-pull fi - # pre-build-deb + pre-build-deb build-extras build-jar build-dist copy-file + copy-file-debbuild create-deb # post-build ;; @@ -225,4 +247,4 @@ case "$1" in *) usage ;; -esac +esac \ No newline at end of file diff --git a/build/bin/wfcsetup.sh b/build/bin/wfcsetup.sh index 9c527fd..31ef857 100755 --- a/build/bin/wfcsetup.sh +++ b/build/bin/wfcsetup.sh @@ -31,7 +31,6 @@ conf_dirs=" ${docker_work_dir}/conf ${docker_work_dir}/wfc/modules/file/conf ${docker_work_dir}/wfc/modules/payment/conf " - case "$1" in env) # prepare directory @@ -42,9 +41,11 @@ case "$1" in fi # setup system serivce - cp -rf ${src_service_dir}/wfccontrol.service ${dst_service_dir}/ - systemctl daemon-reload - systemctl enable wfccontrol.service + if [ -f ${src_service_dir}/wfccontrol.service ]; then + cp -rf ${src_service_dir}/wfccontrol.service ${dst_service_dir}/ + systemctl daemon-reload + systemctl enable wfccontrol.service + fi if [ ! -f ${docker_work_dir}/docker-compose.yml ]; then cp ${docker_work_dir}/compose/docker-compose.yml ${docker_work_dir}/docker-compose.yml diff --git a/build/docker/compose/docker-compose.yml b/build/docker/compose/docker-compose.yml index 6a63516..4ad9e3b 100644 --- a/build/docker/compose/docker-compose.yml +++ b/build/docker/compose/docker-compose.yml @@ -151,7 +151,7 @@ services: - SPRING_CONFIG_ADDITIONAL_LOCATION=optional:classpath:/,optional:file:/opt/wfc/conf/ - TZ=${TZ} healthcheck: - test: ["CMD-SHELL", "curl -f http://localhost:${AUTH_SERVER_PORT}/actuator/health || exit 1"] + test: ["CMD-SHELL", "curl -f http://localhost:${AUTH_SERVER_PORT}/actuator/health || exit 1"] interval: 30s timeout: 10s retries: 10 diff --git a/debbuild/DEBIAN/control b/debbuild/DEBIAN/control index a82ff95..802dfec 100644 --- a/debbuild/DEBIAN/control +++ b/debbuild/DEBIAN/control @@ -1,8 +1,9 @@ Package: WFC -Version: 1.0.7-YYYYMMDD +Version: 1.0.7 Section: WFC Prioritt: optional Architecture: amd64 Maintainer: wfc Depends: -Description: WANFi Controller +Description: WANFi Control and Billing System + diff --git a/debbuild/DEBIAN/postinst b/debbuild/DEBIAN/postinst old mode 100644 new mode 100755 index 669dda6..8a2c3b7 --- a/debbuild/DEBIAN/postinst +++ b/debbuild/DEBIAN/postinst @@ -1,94 +1,14 @@ # !/bin/bash -WFCRootDir=/opt/wfc -SystemdRootDir=/usr/lib/systemd/system -WFCEtcDir=${WFCRootDir}/etc -FERootDir=${WFCRootDir}/nginx/html/dist -wfcBinDir=${WFCRootDir}/bin -UsrLocalBinDir=/usr/local/bin -wfcDaemon=wfcd -NginxEtcDir=/etc/nginx -NginxConfDir=${NginxEtcDir}/conf.d -CFileList="restconf.yaml crontask.yaml tasks.yaml sshsvc.yaml capconf.yaml wfc.conf" -LogoFileList="zh_brand.png zh_icon.png en_brand.png en_icon.png" +wfc_root_dir=/opt/wfc +systemd_dir=/etc/systemd/system +fe_dist_dir=${wfc_root_dir}/opt/wfc/docker/nginx/html/dist +wfc_bin_dir=${wfc_root_dir}/bin -echo "" -echo "* To start/stop/restart/status wfc service, please run:" -echo " sudo systemctl start/stop/restart/status restagent.service" -echo " or run: " -echo " sudo /usr/local/wfc/bin/wfcsvc.sh start/stop/restart/status" -echo "" - -chmod +rx ${WFCRootDir}/bin/* -chmod +rx ${WFCRootDir}/* -chmod +rx ${UsrLocalBinDir}/* -chmod -R 755 ${WFCRootDir}/htdocs/front - -for CFile in ${CFileList}; do - if [ ! -e "${WFCEtcDir}/${CFile}" ]; then - cp -f ${WFCEtcDir}/default/${CFile} ${WFCEtcDir} - else - # mv -f ${WFCEtcDir}/${CFile} ${WFCEtcDir}/${CFile}.bak - # cp -f ${WFCEtcDir}/default/${CFile} ${WFCEtcDir} - if [ -e "${WFCBinDir}/upgconf.sh" ]; then - ${WFCBinDir}/upgconf.sh - fi - fi -done - -if [ ! -e "${FERootDir}/config.js" ]; then - cp ${FERootDir}/default/config.js ${FERootDir}; -fi - -for LogoFile in ${LogoFileList}; do - if [ ! -e "${WFCStaticDir}/logo/${LogoFile}" ]; then - cp ${WFCStaticDir}/wfc.d/logo/${LogoFile} ${WFCStaticDir}/logo; - fi -done - -if ! id -u wfc >/dev/null 2>&1 ; then - useradd -d /opt/wfc -m -s /bin/bash -pwfc123 wfc; - mkdir -p /opt/wfc/ftp -else - echo "user wfc exist"; -fi - -if [ ! -e "${NginxConfDir}/wfc.conf" ]; then - mkdir -p ${NginxConfDir} - cp -f ${WFCEtcDir}/nginx/wfc.conf ${NginxConfDir}; -fi +chmod +rx ${wfc_root_dir}/bin/* systemctl daemon-reload +systemctl enable wfccontrol.service -# disable auto upgrade -systemctl disable --now unattended-upgrades -systemctl enable restagent.service -systemctl enable crontask.service -systemctl enable sshsvc.service -systemctl enable captrace.service -systemctl daemon-reload - -# read environment parameter and to do -if [ "$M_PARAM" = "install" -o "$M_PARAM" = "upgrade" ]; then - echo "M parameter: $M_PARAM" - if [ -n "$C_PARAM" ]; then - echo "C parameter: $C_PARAM" - ${WFCRootDir}/bin/setwfc.sh -m $M_PARAM -c $C_PARAM - else - ${WFCRootDir}/bin/setwfc.sh -m $M_PARAM - fi - # exit while failed to run setwfc.sh - if [ $? -ne 0 ]; then - echo "setwfc.sh execution failed. Exiting." - exit 1 - fi -fi - -echo -n "Starting WFC service ... " -systemctl start crontask.service -systemctl start sshsvc.service -systemctl start captrace.service -systemctl start restagent.service -echo "done" diff --git a/debbuild/DEBIAN/postrm b/debbuild/DEBIAN/postrm old mode 100644 new mode 100755 index e431e89..d80631b --- a/debbuild/DEBIAN/postrm +++ b/debbuild/DEBIAN/postrm @@ -1,23 +1,6 @@ # !/bin/bash -#rm -rf /usr/local/omc -rm -rf /etc/nginx/conf.d/omc.conf -rm -f /usr/local/bin/omcd - systemctl daemon-reload +# systemctl stop wfccontrol.service +systemctl disable wfccontrol.service -if systemctl list-units --type=service --all | grep -q 'restagent.service'; then - echo -n "Stopping OMC service ... " - systemctl stop restagent.service - systemctl stop crontask.service - systemctl stop sshsvc.service - systemctl stop captrace.service - echo "done" -fi - -systemctl disable restagent.service -systemctl disable crontask.service -systemctl disable sshsvc.service -systemctl disable captrace.service - -systemctl daemon-reload diff --git a/debbuild/DEBIAN/preinst b/debbuild/DEBIAN/preinst old mode 100644 new mode 100755 index c2a92df..f4e35da --- a/debbuild/DEBIAN/preinst +++ b/debbuild/DEBIAN/preinst @@ -1,16 +1,8 @@ # !/bin/bash -systemctl daemon-reload -if systemctl list-units --type=service --all | grep -q 'restagent.service'; then - echo -n "Stopping WFC service ... " - systemctl stop restagent.service - echo "done" -fi +fe_dist_dir=/opt/wfc/docker/nginx/html/dist -FERootDir=/usr/local/omc/htdocs/front - -# apt-get install zip # clear front-end old hash js files -rm -rf ${FERootDir}/assets -rm -rf ${FERootDir}/js -rm -rf ${FERootDir}/index.*.js +rm -rf ${fe_dist_dir}/sys +rm -rf ${fe_dist_dir}/u + diff --git a/debbuild/DEBIAN/prerm b/debbuild/DEBIAN/prerm new file mode 100755 index 0000000..a4aad04 --- /dev/null +++ b/debbuild/DEBIAN/prerm @@ -0,0 +1,7 @@ +# !/bin/bash + +wfc_bin_dir=/opt/wfc/bin + +${wfc_bin_dir}/wfccontrol.sh stop +${wfc_bin_dir}/wfcsetup.sh rm all +