topfans/backend/compile-and-restart.sh
2026-04-07 22:29:48 +08:00

80 lines
2.1 KiB
Bash

#!/bin/bash
# 编译 Gateway、AssetService 并重启
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 编译并重启${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
# 1. 编译 Gateway
echo -e "${YELLOW}[1/4] 编译 Gateway...${NC}"
cd "$SCRIPT_DIR/gateway"
if go build -o gateway . 2>&1; then
echo -e "${GREEN}✓ Gateway 编译成功${NC}"
else
echo -e "${RED}✗ Gateway 编译失败${NC}"
exit 1
fi
cd "$SCRIPT_DIR"
echo ""
# 2. 编译 AssetService
echo -e "${YELLOW}[2/4] 编译 AssetService...${NC}"
cd "$SCRIPT_DIR/services/assetService"
if go build -o assetService . 2>&1; then
echo -e "${GREEN}✓ AssetService 编译成功${NC}"
else
echo -e "${RED}✗ AssetService 编译失败${NC}"
exit 1
fi
cd "$SCRIPT_DIR"
echo ""
# 3. 停止旧进程
echo -e "${YELLOW}[3/4] 停止旧进程...${NC}"
pkill -f "gateway" 2>/dev/null || true
pkill -f "assetService" 2>/dev/null || true
pkill -f "go run main.go" 2>/dev/null || true
sleep 2
echo -e "${GREEN}✓ 已停止${NC}"
echo ""
# 4. 启动服务(按依赖顺序)
echo -e "${YELLOW}[4/4] 启动服务...${NC}"
# AssetService
cd "$SCRIPT_DIR/services/assetService"
./assetService > /tmp/assetService.log 2>&1 &
echo -e "${GREEN}✓ AssetService 已启动${NC}"
cd "$SCRIPT_DIR"
sleep 1
# Gateway
cd "$SCRIPT_DIR/gateway"
./gateway > /tmp/gateway.log 2>&1 &
echo -e "${GREEN}✓ Gateway 已启动${NC}"
cd "$SCRIPT_DIR"
sleep 2
# 检查
echo ""
if curl -s http://localhost:8080/health > /dev/null 2>&1; then
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 编译并重启完成${NC}"
echo -e "${GREEN}========================================${NC}"
echo " Gateway: http://localhost:8080"
echo " 日志: tail -f /tmp/gateway.log"
else
echo -e "${YELLOW}Gateway 可能仍在启动,请稍后检查: curl http://localhost:8080/health${NC}"
fi
echo ""