feat: 优化 update 脚本,新增 Windows 版 update.ps1
- update.sh: 改为 git pull 拉取整个仓库,命令行内选择更新方式(默认拉取+更新) - update.ps1: 新增 Windows 更新脚本,功能与 Linux 版一致 - README: 更新 update 脚本说明及 Windows 使用方式 Made-with: Cursor
This commit is contained in:
@@ -2,75 +2,65 @@
|
||||
|
||||
set -e # 发生错误时终止脚本执行
|
||||
|
||||
# 参数解析
|
||||
SKIP_COMPOSE_UPDATE=false
|
||||
# 仅支持 -h/--help 快速查看
|
||||
if [[ "${1:-}" =~ ^(-h|--help)$ ]]; then
|
||||
echo "用法: $0"
|
||||
echo ""
|
||||
echo "脚本将提示选择更新方式,默认拉取仓库并更新镜像。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 解析命令行参数
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--skip-compose-update|-s)
|
||||
SKIP_COMPOSE_UPDATE=true
|
||||
shift
|
||||
;;
|
||||
--help|-h)
|
||||
echo "用法: $0 [选项]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " -s, --skip-compose-update 跳过 docker-compose.yml 的更新"
|
||||
echo " -h, --help 显示此帮助信息"
|
||||
echo ""
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "❌ 未知参数: $1"
|
||||
echo "使用 --help 或 -h 查看帮助信息"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# 进入脚本所在目录(项目根目录)
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# 更新 docker-compose.yml 文件
|
||||
if [ "$SKIP_COMPOSE_UPDATE" = false ]; then
|
||||
# 命令行内选择更新方式(默认:更新并拉取仓库)
|
||||
echo ""
|
||||
echo "请选择更新方式:"
|
||||
echo " [1] 更新并拉取仓库(git pull)+ 更新镜像并重启(默认)"
|
||||
echo " [2] 仅更新镜像并重启(跳过 git pull)"
|
||||
read -r -p "请选择 [1/2,回车默认 1]: " choice
|
||||
choice="${choice:-1}"
|
||||
SKIP_REPO_UPDATE=false
|
||||
case "$choice" in
|
||||
2) SKIP_REPO_UPDATE=true ;;
|
||||
1) ;;
|
||||
*) echo "❌ 无效选择,将使用默认:更新并拉取仓库"; SKIP_REPO_UPDATE=false ;;
|
||||
esac
|
||||
|
||||
# 拉取整个仓库更新
|
||||
if [ "$SKIP_REPO_UPDATE" = false ]; then
|
||||
echo ""
|
||||
echo "==========================="
|
||||
echo "📄 检查并更新 docker-compose.yml"
|
||||
echo "📥 拉取仓库最新代码"
|
||||
echo "==========================="
|
||||
|
||||
COMPOSE_FILE="docker-compose.yml"
|
||||
COMPOSE_URL="https://git.51easyai.com/wangbo/easyai/raw/main/docker-compose.yml"
|
||||
TEMP_FILE=$(mktemp)
|
||||
|
||||
# 检查本地文件是否存在
|
||||
if [ ! -f "$COMPOSE_FILE" ]; then
|
||||
echo "⚠️ 本地 $COMPOSE_FILE 不存在,直接下载最新版本..."
|
||||
curl -fsSL "$COMPOSE_URL" -o "$COMPOSE_FILE"
|
||||
echo "✅ $COMPOSE_FILE 已下载"
|
||||
else
|
||||
echo "📥 正在下载远程 $COMPOSE_FILE..."
|
||||
if curl -fsSL "$COMPOSE_URL" -o "$TEMP_FILE"; then
|
||||
# 比较本地文件和远程文件的内容
|
||||
if cmp -s "$COMPOSE_FILE" "$TEMP_FILE"; then
|
||||
echo "✅ 本地 $COMPOSE_FILE 已是最新版本,无需更新"
|
||||
rm -f "$TEMP_FILE"
|
||||
else
|
||||
echo "🔄 检测到新版本,正在更新..."
|
||||
# 备份原文件
|
||||
BACKUP_FILE="${COMPOSE_FILE}.bak"
|
||||
cp "$COMPOSE_FILE" "$BACKUP_FILE"
|
||||
echo "💾 原文件已备份为 $BACKUP_FILE"
|
||||
# 替换为新文件
|
||||
mv "$TEMP_FILE" "$COMPOSE_FILE"
|
||||
echo "✅ $COMPOSE_FILE 已更新到最新版本"
|
||||
fi
|
||||
else
|
||||
echo "❌ 无法下载远程文件,跳过更新步骤"
|
||||
rm -f "$TEMP_FILE"
|
||||
fi
|
||||
if [ ! -d .git ]; then
|
||||
echo "❌ 当前目录不是 Git 仓库,无法执行 git pull"
|
||||
echo " 请使用 git clone 克隆项目后即可使用 update.sh 更新"
|
||||
echo " 克隆命令: git clone https://git.51easyai.com/wangbo/easyai && cd easyai"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📥 正在执行 git pull..."
|
||||
if git pull; then
|
||||
echo "✅ 仓库已更新到最新版本"
|
||||
else
|
||||
echo "❌ git pull 失败,请检查网络或远程仓库配置"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 确保环境配置文件存在(从 .sample 生成,不覆盖已有文件)
|
||||
echo ""
|
||||
echo "📝 检查环境配置文件..."
|
||||
[ ! -f .env ] && [ -f .env.sample ] && cp .env.sample .env && echo " ✓ .env"
|
||||
[ ! -f .env.tools ] && [ -f .env.tools.sample ] && cp .env.tools.sample .env.tools && echo " ✓ .env.tools"
|
||||
[ ! -f .env.ASG ] && [ -f .env.ASG.sample ] && cp .env.ASG.sample .env.ASG && echo " ✓ .env.ASG"
|
||||
[ ! -f .env.AMS ] && [ -f .env.AMS.sample ] && cp .env.AMS.sample .env.AMS && echo " ✓ .env.AMS"
|
||||
|
||||
echo ""
|
||||
else
|
||||
echo "⏭️ 跳过 docker-compose.yml 更新(已使用 --skip-compose-update 参数)"
|
||||
echo "⏭️ 跳过仓库更新,仅更新镜像并重启"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user