fix(deploy): 修复远程部署配置解析并支持 remote-restart
- remote.conf.example: 含空格的值加引号,避免 source 时截断报错 - deploy.sh: 抽出 run_remote_script 公共远程流程(deploy/restart 复用), 新增 remote-restart 命令(不重新构建直接重启) - 启动前 source 服务器 app.env 注入环境变量(app.env 值需加引号, JDBC URL 含 & 否则被截断)
This commit is contained in:
@@ -119,10 +119,10 @@ do_push() {
|
||||
echo "[OK] 已上传到 $REMOTE_SSH_HOST:$REMOTE_DIR/xiaoqu-agent-service.jar.new"
|
||||
}
|
||||
|
||||
do_remote_deploy() {
|
||||
do_build
|
||||
do_push
|
||||
ssh_remote "REMOTE_DIR='$REMOTE_DIR' REMOTE_PROFILE='$REMOTE_PROFILE' REMOTE_PORT='$REMOTE_PORT' REMOTE_JAVA_OPTS='$REMOTE_JAVA_OPTS' REMOTE_SPRING_ARGS='$REMOTE_SPRING_ARGS' REMOTE_JAVA_BIN='$REMOTE_JAVA_BIN' bash -s" <<'EOS'
|
||||
# 在远程执行 停旧→(可选)换包→启动→健康检查;$1: 1=换上新传的 jar,0=仅重启现有 jar
|
||||
run_remote_script() {
|
||||
load_remote_conf
|
||||
ssh_remote "REMOTE_DIR='$REMOTE_DIR' REMOTE_PROFILE='$REMOTE_PROFILE' REMOTE_PORT='$REMOTE_PORT' REMOTE_JAVA_OPTS='$REMOTE_JAVA_OPTS' REMOTE_SPRING_ARGS='$REMOTE_SPRING_ARGS' REMOTE_JAVA_BIN='$REMOTE_JAVA_BIN' DEPLOY_NEW='$1' bash -s" <<'EOS'
|
||||
set -euo pipefail
|
||||
cd "$REMOTE_DIR"
|
||||
if [ -f app.pid ] && kill -0 "$(cat app.pid)" 2>/dev/null; then
|
||||
@@ -130,8 +130,10 @@ if [ -f app.pid ] && kill -0 "$(cat app.pid)" 2>/dev/null; then
|
||||
for i in $(seq 1 15); do kill -0 "$(cat app.pid)" 2>/dev/null || break; sleep 1; done
|
||||
kill -0 "$(cat app.pid)" 2>/dev/null && kill -9 "$(cat app.pid)"
|
||||
fi
|
||||
[ -f xiaoqu-agent-service.jar ] && cp xiaoqu-agent-service.jar "xiaoqu-agent-service.jar.bak.$(date +%Y%m%d%H%M%S)"
|
||||
mv -f xiaoqu-agent-service.jar.new xiaoqu-agent-service.jar
|
||||
if [ "$DEPLOY_NEW" = "1" ]; then
|
||||
[ -f xiaoqu-agent-service.jar ] && cp xiaoqu-agent-service.jar "xiaoqu-agent-service.jar.bak.$(date +%Y%m%d%H%M%S)"
|
||||
mv -f xiaoqu-agent-service.jar.new xiaoqu-agent-service.jar
|
||||
fi
|
||||
if [ -f app.env ]; then
|
||||
set -a; source app.env; set +a
|
||||
else
|
||||
@@ -161,6 +163,16 @@ exit 1
|
||||
EOS
|
||||
}
|
||||
|
||||
do_remote_deploy() {
|
||||
do_build
|
||||
do_push
|
||||
run_remote_script 1
|
||||
}
|
||||
|
||||
do_remote_restart() {
|
||||
run_remote_script 0
|
||||
}
|
||||
|
||||
do_remote_stop() {
|
||||
load_remote_conf
|
||||
ssh_remote "cd '$REMOTE_DIR' && if [ -f app.pid ] && kill -0 \$(cat app.pid) 2>/dev/null; then kill \$(cat app.pid) && rm -f app.pid && echo '[OK] 远程已停止'; else echo '[SKIP] 远程未在运行'; fi"
|
||||
@@ -180,10 +192,11 @@ case "${1:-}" in
|
||||
log) tail -f "$LOG_FILE" ;;
|
||||
push) do_push ;;
|
||||
remote-deploy) do_remote_deploy ;;
|
||||
remote-restart) do_remote_restart ;;
|
||||
remote-stop) do_remote_stop ;;
|
||||
remote-status) do_remote_status ;;
|
||||
remote-log) load_remote_conf; ssh_remote "tail -f '$REMOTE_DIR/logs/agent-service.log'" ;;
|
||||
*)
|
||||
echo "用法: $0 {build|start|stop|restart|status|log|push|remote-deploy|remote-stop|remote-status|remote-log}" >&2
|
||||
echo "用法: $0 {build|start|stop|restart|status|log|push|remote-deploy|remote-restart|remote-stop|remote-status|remote-log}" >&2
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
@@ -19,7 +19,7 @@ REMOTE_PROFILE=prod
|
||||
REMOTE_PORT=8088
|
||||
|
||||
# JVM 参数(可选)
|
||||
REMOTE_JAVA_OPTS=-Xms512m -Xmx1024m
|
||||
REMOTE_JAVA_OPTS="-Xms512m -Xmx1024m"
|
||||
|
||||
# java 命令路径(可选,默认用 PATH 里的 java;远程有多个 JDK 时建议显式指定 17)
|
||||
# REMOTE_JAVA_BIN=/usr/lib/jvm/jre-17-openjdk/bin/java
|
||||
|
||||
Reference in New Issue
Block a user