1
0
mirror of https://github.com/FloatTech/zbpdata.git synced 2024-09-29 17:36:28 +09:00

添加qqci模板 (#24)

This commit is contained in:
himawari 2022-07-17 22:16:50 +08:00 committed by GitHub
parent fa6b84b049
commit 0899cf2973
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 193 additions and 0 deletions

23
Qqci/Makefile.tpl Normal file
View File

@ -0,0 +1,23 @@
SHELL=/bin/bash
APPNAME ?= {{.Appname}}
PKGNAME ?= $(APPNAME).tar.gz
BUILD_DIR = $(shell pwd)
TEMP_OUTPUT_DIR = $(shell pwd)/_output/$(APPNAME)
tar: build package
@echo -e "======\033[44m all done \033[0m"
build:
go mod tidy
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/$(APPNAME) ./
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $(BUILD_DIR)/$(APPNAME).exe ./
package:
@-rm -rf $(TEMP_OUTPUT_DIR) >/dev/null 2>&1
mkdir -p $(TEMP_OUTPUT_DIR) >/dev/null 2>&1
cp -rL $(BUILD_DIR)/$(APPNAME) $(TEMP_OUTPUT_DIR)/
cp -rL $(BUILD_DIR)/$(APPNAME).exe $(TEMP_OUTPUT_DIR)/
cp -rL $(BUILD_DIR)/README.md $(TEMP_OUTPUT_DIR)/
cd $(TEMP_OUTPUT_DIR)/.. && tar -czf $(PKGNAME) $(APPNAME)

170
Qqci/load.tpl Normal file
View File

@ -0,0 +1,170 @@
#!/bin/bash
approot=$(pwd)
appname={{.Appname}}
appexec={{.Command}}
isdaemon=${isdaemon:=true}
usemonitor=${usemonitor:=false}
##########################################
# main function.
##########################################
function main() {
echo "=="$(date +"%Y-%m-%d %H:%M:%S")"=="
case "$1" in
start)
$usemonitor && start_by_monitor || start_directly
;;
restart|reload)
$usemonitor && restart_by_monitor || restart_directly
;;
stop)
$usemonitor && stop_by_monitor || stop_directly
;;
install)
$usemonitor && install_with_monitor || install_no_monitor
;;
*)
echo "Usage: ./load.sh {install|start|stop|restart}"
exit 1
esac
}
##########################################
# install:
# do something before reload after deploy
##########################################
function install_no_monitor() {
##### make logs directory at app directory ##############
function isemptydir() {
[ `ls -A "$approot/logs" 2>/dev/null | wc -l` -eq 0 ] && echo true || echo false;
}
if [ ! -d $approot/logs -o $(isemptydir) == true ]; then
mkdir -p /data/logs/${appname};
rm -rf $approot/logs;
ln -s /data/logs/${appname} $approot/logs;
fi
}
function install_with_monitor() {
##### do install no monitor actions #####################
install_no_monitor
##### get the supervisor config & incloude directory ####
appmonitor=supervisor
monitconf=${SUPERVISOR_CONF:=$(find /etc -name supervisord.conf -type f 2>/dev/null)}
monitconf=${monitconf:=/etc/supervisor/supervisord.conf}
echo "The path of supervisord.conf is: '${monitconf}'"
monitinclude=${SUPERVISOR_INCLUDE:=$(grep '^\[include\]$' $monitconf -A2 | sed -n 's/^files=\([^*]*\)\(\*.conf\)*/\1/p')}
monitinclude=${monitinclude:=/etc/supervisord.d}
echo "The folder of supervisord files is: ${monitincloude}"
##### install ignore if file exist. #####################
if [ -f ${monitinclude}/${appname}.ini ]; then
echo "WARNING: install ignore, because of file '${monitinclude}/${appname}.ini' is exist"
exit 0
fi
cat >${monitinclude}/${appname}.ini <<-EOF
[program:${appname}]
command=${appexec}
process_name=%(program_name)s
numprocs=1
priority=1
directory=${approot}
autostart=true
autorestart=true
stdout_logfile=/data/logs/supervisor/%(program_name)s.log
stderr_logfile=/data/logs/supervisor/%(program_name)s.err
stdout_logfile_maxbytes=500MB
stderr_logfile_maxbytes=500MB
stdout_logfile_backups=5
stderr_logfile_backups=5
EOF
##### update supervisor & show supervisor status ########
echo "Update ing..."
supervisorctl update
echo "Update done"
echo "-----current supervisor result: -----";
supervisorctl status ${appname}
echo "-----current supervisor result done -----";
}
##########################################
# start:
# start the application
##########################################
function start_directly() {
if $isdaemon; then
#### start app backgroud #####
nohup $appexec &
echo $! > $approot/logs/pid
wait $!
else
#### start app frontgroud ####
rm -f $approot/logs/stoped
while [ ! -f $approot/logs/stoped ]; do
$appexec
sleep 30
done
fi
}
function start_by_monitor() {
echo "Start application ...";
supervisorctl start ${appname}
sleep 0.2;
echo "-----current supervisor result: -----";
supervisorctl status ${appname}
echo "-----current supervisor result done -----";
echo "START DONE";
}
##########################################
# stop:
# stop the application
##########################################
function stop_directly() {
#### check pid file ############
if [ ! -f $approot/logs/pid ]; then
echo "ERROR: no pid file: '$approot/logs/pid'"
return 1
fi
#### check cmdline ############
local pid=$(cat $approot/logs/pid)
if [ -z $pid ] || [ "$(/proc/$pid/cmdline)"x == "$appexec"x ]; then
echo "ERROR: pid($pid) is invalid or command line mismatch";
return 1
fi
#### do stop ##################
echo "stoped at: $(date +'%Y-%m-%d %H:%M:%S')" > $approot/logs/stoped
kill -9 $pid
}
function stop_by_monitor() {
echo "Stop application ...";
supervisorctl stop ${appname}
sleep 0.1;
echo "-----current supervisor result: -----";
supervisorctl status ${appname}
echo "-----current supervisor result done -----";
echo "STOP DONE"
}
##########################################
# restart:
# restart the application
##########################################
function restart_directly() {
stop_directly && start_directly
}
function restart_by_monitor() {
stop_by_monitor && start_by_monitor
}
#############################################
############## run ##########################
main $@
#############################################