#!/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 ""