Files
xinghuoapi/scripts/update_server.sh
huangzhenpc d46653b2c2
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>
2026-01-30 01:42:21 +08:00

122 lines
3.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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