auto_update.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/bin/sh
  2. # 自动更新为最新版本
  3. # 获取最新版本号
  4. ftag_name=$(curl -ksSL https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest | sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p')
  5. # 如果获取失败,使用默认版本
  6. if [ -z "$ftag_name" ]; then
  7. echo "无法获取最新版本号,使用默认版本 v1.2"
  8. ftag_name="v1.2"
  9. fi
  10. echo "最新版本: ${ftag_name}"
  11. # 版本标记文件
  12. VERSION_FILE="/app/version.txt"
  13. # 检查是否需要更新
  14. if [ -f "$VERSION_FILE" ]; then
  15. current_version=$(cat "$VERSION_FILE")
  16. echo "当前版本: ${current_version}"
  17. if [ "$current_version" = "$ftag_name" ]; then
  18. echo "已是最新版本,无需更新"
  19. else
  20. echo "发现新版本,开始更新..."
  21. rm -f /app/mixapi
  22. fi
  23. else
  24. echo "首次运行,开始下载..."
  25. fi
  26. # 如果可执行文件不存在,则下载
  27. if [ ! -f "/app/mixapi" ]; then
  28. # 检测架构
  29. arch="$(uname -m)"
  30. echo "检测到架构: ${arch}"
  31. case "$arch" in
  32. 'x86_64')
  33. download_url="https://github.com/aiprodcoder/MIXAPI/releases/download/${ftag_name}/mixapi-${ftag_name}-linux-amd64"
  34. ;;
  35. 'aarch64')
  36. download_url="https://github.com/aiprodcoder/MIXAPI/releases/download/${ftag_name}/mixapi-${ftag_name}-linux-arm64"
  37. ;;
  38. *)
  39. echo "不支持的架构: ${arch}"
  40. exit 1
  41. ;;
  42. esac
  43. echo "下载地址: ${download_url}"
  44. curl -ksSL -o /app/mixapi "${download_url}"
  45. if [ $? -eq 0 ]; then
  46. chmod +x /app/mixapi
  47. echo "${ftag_name}" > "$VERSION_FILE"
  48. echo "下载完成,版本: ${ftag_name}"
  49. else
  50. echo "下载失败"
  51. exit 1
  52. fi
  53. fi
  54. # 如果不是仅更新模式,则启动服务
  55. if [ "${1}" != "OnlyUpdate" ]; then
  56. echo "启动 mixapi 服务..."
  57. exec /app/mixapi
  58. fi