CoolFace
Apppublic

llzai/axonhub

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes
deploy.sh151 linesDownload Raw Back to root
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 ""