添加上游同步自动化工具
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled

新增工具脚本:
- 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>
This commit is contained in:
huangzhenpc
2026-01-30 01:42:21 +08:00
parent e2c325505a
commit d46653b2c2
8 changed files with 711 additions and 1 deletions

121
scripts/update_server.sh Normal file
View File

@@ -0,0 +1,121 @@
#!/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