84 lines
2.0 KiB
Bash
Executable File
84 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================
|
|
# 启动 Git Webhook 自动触发服务
|
|
# GitHub/Gitee push 后自动触发全流程部署回测
|
|
# ============================================
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
LOG_FILE="$SCRIPT_DIR/webhook.log"
|
|
PID_FILE="$SCRIPT_DIR/webhook.pid"
|
|
|
|
start() {
|
|
echo "启动 Git Webhook 自动触发服务..."
|
|
|
|
# 检查是否已经运行
|
|
if [ -f "$PID_FILE" ]; then
|
|
PID=$(cat "$PID_FILE")
|
|
if kill -0 "$PID" 2>/dev/null; then
|
|
echo "❌ Webhook 服务已经在运行 (PID: $PID)"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# 后台启动(在虚拟环境中)
|
|
nohup bash -c "source '$SCRIPT_DIR/vnpy_env/bin/activate' && python3 '$SCRIPT_DIR/git_webhook_server.py'" >> "$LOG_FILE" 2>&1 &
|
|
PID=$!
|
|
echo "$PID" > "$PID_FILE"
|
|
|
|
echo "✅ Webhook 服务已启动 (PID: $PID)"
|
|
echo "📝 日志: $LOG_FILE"
|
|
echo "🌐 监听地址: http://0.0.0.0:8899/webhook"
|
|
echo "🔑 Token: sanguo-quant-2026"
|
|
echo "🚀 Git push 后自动触发全流程部署回测!"
|
|
}
|
|
|
|
stop() {
|
|
echo "停止 Webhook 服务..."
|
|
|
|
if [ ! -f "$PID_FILE" ]; then
|
|
echo "❌ Webhook 服务没有运行"
|
|
exit 1
|
|
fi
|
|
|
|
PID=$(cat "$PID_FILE")
|
|
kill "$PID" 2>/dev/null
|
|
rm -f "$PID_FILE"
|
|
|
|
echo "✅ Webhook 服务已停止"
|
|
}
|
|
|
|
status() {
|
|
if [ -f "$PID_FILE" ]; then
|
|
PID=$(cat "$PID_FILE")
|
|
if kill -0 "$PID" 2>/dev/null; then
|
|
echo "✅ Webhook 服务正在运行 (PID: $PID)"
|
|
else
|
|
echo "❌ PID 文件存在,但进程不存在"
|
|
fi
|
|
else
|
|
echo "❌ Webhook 服务没有运行"
|
|
fi
|
|
}
|
|
|
|
case "${1:-start}" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
restart)
|
|
stop
|
|
sleep 1
|
|
start
|
|
;;
|
|
*)
|
|
echo "用法: $0 {start|stop|status|restart}"
|
|
exit 1
|
|
;;
|
|
esac
|