新增工具脚本: - scripts/sync-upstream.sh: 主同步脚本,自动从上游拉取并应用配置 - scripts/apply-branding.sh: 自动应用StarFireAPI品牌化修改 - scripts/apply-deploy-config.sh: 自动应用部署配置 - scripts/README.md: 工具使用说明 功能特性: ✅ 自动备份当前分支 ✅ 从上游仓库拉取最新代码 ✅ 自动应用品牌化修改(Sub2API → StarFireAPI) ✅ 自动应用部署配置(端口、Redis、镜像等) ✅ 智能提示和确认 ✅ 支持回滚操作 使用方法: chmod +x scripts/*.sh ./scripts/sync-upstream.sh 修改 .gitignore 以允许追踪自定义同步工具 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
122 lines
3.2 KiB
Bash
122 lines
3.2 KiB
Bash
#!/bin/bash
|
||
# StarFireAPI 服务器一键更新脚本
|
||
# 用途:在服务器上快速更新到最新版本
|
||
# 使用:bash update_server.sh
|
||
|
||
set -e
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 项目目录
|
||
PROJECT_DIR="/opt/xinghuoapi"
|
||
|
||
echo -e "${BLUE}=========================================="
|
||
echo "🚀 StarFireAPI 服务器更新脚本"
|
||
echo -e "==========================================${NC}"
|
||
echo ""
|
||
|
||
# 检查是否在正确的目录
|
||
if [ ! -d "$PROJECT_DIR" ]; then
|
||
echo -e "${RED}❌ 错误: 项目目录 $PROJECT_DIR 不存在${NC}"
|
||
echo "请先克隆代码到服务器"
|
||
exit 1
|
||
fi
|
||
|
||
cd "$PROJECT_DIR"
|
||
|
||
# 步骤 1: 检查当前状态
|
||
echo -e "${YELLOW}📋 步骤 1/6: 检查当前状态...${NC}"
|
||
echo "当前分支: $(git branch --show-current)"
|
||
echo "当前版本: $(cat backend/cmd/server/VERSION 2>/dev/null || echo '未知')"
|
||
echo "最新提交: $(git log --oneline -1)"
|
||
echo ""
|
||
|
||
# 步骤 2: 拉取最新代码
|
||
echo -e "${YELLOW}📥 步骤 2/6: 拉取最新代码...${NC}"
|
||
git pull origin main
|
||
echo -e "${GREEN}✓ 代码更新完成${NC}"
|
||
echo ""
|
||
|
||
# 步骤 3: 显示更新内容
|
||
echo -e "${YELLOW}📝 步骤 3/6: 查看更新内容...${NC}"
|
||
echo "新版本: $(cat backend/cmd/server/VERSION)"
|
||
echo "最近 3 次提交:"
|
||
git log --oneline -3
|
||
echo ""
|
||
|
||
# 步骤 4: 构建本地镜像
|
||
echo -e "${YELLOW}🔨 步骤 4/6: 构建本地镜像 (starfireapi:latest)...${NC}"
|
||
echo "这可能需要 3-5 分钟,请耐心等待..."
|
||
docker build -t starfireapi:latest . || {
|
||
echo -e "${RED}❌ 镜像构建失败${NC}"
|
||
exit 1
|
||
}
|
||
echo -e "${GREEN}✓ 镜像构建完成${NC}"
|
||
echo ""
|
||
|
||
# 步骤 5: 更新 docker-compose.yml
|
||
echo -e "${YELLOW}⚙️ 步骤 5/6: 更新 docker-compose.yml...${NC}"
|
||
cd deploy
|
||
|
||
# 备份原文件
|
||
if [ -f docker-compose.yml ]; then
|
||
cp docker-compose.yml docker-compose.yml.bak.$(date +%Y%m%d_%H%M%S)
|
||
echo "已备份 docker-compose.yml"
|
||
fi
|
||
|
||
# 修改镜像名称
|
||
sed -i 's|image: weishaw/sub2api:latest|image: starfireapi:latest|g' docker-compose.yml
|
||
|
||
# 验证修改
|
||
if grep -q "image: starfireapi:latest" docker-compose.yml; then
|
||
echo -e "${GREEN}✓ docker-compose.yml 已更新为使用本地镜像${NC}"
|
||
else
|
||
echo -e "${YELLOW}⚠️ 警告: docker-compose.yml 可能已经使用本地镜像${NC}"
|
||
fi
|
||
echo ""
|
||
|
||
# 步骤 6: 重启服务
|
||
echo -e "${YELLOW}🔄 步骤 6/6: 重启服务...${NC}"
|
||
docker-compose down
|
||
docker-compose up -d
|
||
|
||
# 等待服务启动
|
||
echo "等待服务启动..."
|
||
sleep 10
|
||
|
||
# 检查服务状态
|
||
echo ""
|
||
echo -e "${BLUE}=========================================="
|
||
echo "✅ 更新完成!"
|
||
echo -e "==========================================${NC}"
|
||
echo ""
|
||
|
||
# 显示服务状态
|
||
echo -e "${GREEN}📊 服务状态:${NC}"
|
||
docker-compose ps
|
||
echo ""
|
||
|
||
# 显示访问信息
|
||
echo -e "${GREEN}🌐 访问信息:${NC}"
|
||
echo " 地址: http://107.175.54.36:6580"
|
||
echo " 管理员: maticarmy@gmail.com"
|
||
echo " 密码: oadmin@123"
|
||
echo ""
|
||
|
||
# 显示日志命令
|
||
echo -e "${BLUE}📝 查看日志:${NC}"
|
||
echo " docker-compose logs -f sub2api"
|
||
echo ""
|
||
|
||
# 询问是否查看日志
|
||
read -p "是否查看实时日志?(y/n) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
docker-compose logs -f sub2api
|
||
fi
|