llzai/axonhub
0
1#!/bin/bash2# AxonHub Hugging Face Spaces 部署脚本3# 4# 使用方法:5# ./deploy.sh <HF_USERNAME> <SPACE_NAME>6#7# 示例:8# ./deploy.sh myusername axonhub9 10set -e11 12# 颜色定义13RED='\033[0;31m'14GREEN='\033[0;32m'15YELLOW='\033[1;33m'16BLUE='\033[0;34m'17NC='\033[0m' # No Color18 19# 打印带颜色的消息20info() {21 echo -e "${BLUE}[INFO]${NC} $1"22}23 24success() {25 echo -e "${GREEN}[SUCCESS]${NC} $1"26}27 28warn() {29 echo -e "${YELLOW}[WARN]${NC} $1"30}31 32error() {33 echo -e "${RED}[ERROR]${NC} $1"34 exit 135}36 37# 检查参数38if [ -z "$1" ] || [ -z "$2" ]; then39 echo "使用方法: $0 <HF_USERNAME> <SPACE_NAME>"40 echo "示例: $0 myusername axonhub"41 exit 142fi43 44HF_USERNAME=$145SPACE_NAME=$246SPACE_URL="https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}"47 48info "开始部署 AxonHub 到 Hugging Face Spaces"49info "Space URL: ${SPACE_URL}"50 51# 检查 git 是否安装52if ! command -v git &> /dev/null; then53 error "请先安装 git"54fi55 56# 获取脚本所在目录(hf 目录)57SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"58# 项目根目录59PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"60 61info "项目根目录: ${PROJECT_ROOT}"62 63# 创建临时目录64TEMP_DIR=$(mktemp -d)65info "创建临时目录: ${TEMP_DIR}"66 67# 清理函数68cleanup() {69 info "清理临时目录..."70 rm -rf "$TEMP_DIR"71}72trap cleanup EXIT73 74# 克隆 HF Space75info "克隆 Hugging Face Space..."76cd "$TEMP_DIR"77 78if ! git clone "https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" space 2>/dev/null; then79 warn "Space 不存在或无法克隆,请先在 Hugging Face 上创建 Space"80 echo ""81 echo "创建步骤:"82 echo "1. 访问 https://huggingface.co/spaces"83 echo "2. 点击 'Create new Space'"84 echo "3. Space name: ${SPACE_NAME}"85 echo "4. SDK: Docker"86 echo "5. Docker template: Blank"87 echo ""88 error "请创建 Space 后重新运行此脚本"89fi90 91cd space92 93# 复制项目文件94info "复制项目文件..."95 96# 复制所有源码(排除不需要的目录)97rsync -av --progress "$PROJECT_ROOT/" . \98 --exclude '.git' \99 --exclude 'node_modules' \100 --exclude 'dist' \101 --exclude 'vendor' \102 --exclude '.idea' \103 --exclude '.vscode' \104 --exclude '*.log' \105 --exclude 'hf/deploy.sh' \106 2>/dev/null || {107 # 如果 rsync 不可用,使用 cp108 warn "rsync 不可用,使用 cp 复制文件..."109 cp -r "$PROJECT_ROOT"/* . 2>/dev/null || true110 rm -rf node_modules dist vendor .idea .vscode *.log 2>/dev/null || true111}112 113# 使用 HF 专用的 Dockerfile 和 README114info "配置 Hugging Face 专用文件..."115cp "$SCRIPT_DIR/Dockerfile" ./Dockerfile116cp "$SCRIPT_DIR/README.md" ./README.md117 118# 检查是否有更改119if git diff --quiet && git diff --staged --quiet; then120 warn "没有检测到更改"121else122 # 提交更改123 info "提交更改..."124 git add .125 git commit -m "Deploy AxonHub $(date +%Y-%m-%d_%H:%M:%S)"126 127 # 推送到 HF128 info "推送到 Hugging Face Spaces..."129 git push130 131 success "部署完成!"132fi133 134echo ""135echo "=========================================="136success "AxonHub 已成功部署到 Hugging Face Spaces"137echo "=========================================="138echo ""139echo "访问地址: ${SPACE_URL}"140echo ""141echo "重要提示:"142echo "1. 请在 Space Settings 中配置数据库连接:"143echo " - Secret 名称: AXONHUB_DB_DSN"144echo " - Secret 值: postgres://user:pass@host/db?sslmode=require"145echo ""146echo "2. 默认登录凭据:"147echo " - 邮箱: admin@axonhub.com"148echo " - 密码: admin"149echo ""150echo "3. 首次登录后请立即修改默认密码!"151echo ""