Changes: - Add FAL_KEY and GEMINI_API_KEY to .env.example - Update picture-it to use ~/.config/opencode/.env (unified creds) - Remove shodh-memory skill (no longer used) - Remove alphaear-* skills (deprecated) - Remove thai-frontend-dev skill (replaced by website-creator) - Remove theme-factory skill - Add mql-developer skill (MQL5 trading) - Add ecommerce-astro skill (Astro e-commerce) - Add website-creator skill (Next.js + Payload CMS) - Update install script for new skills
268 lines
6.9 KiB
Bash
Executable File
268 lines
6.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#===============================================================================
|
|
# deploy.sh - Deploy Astro + Payload CMS ไปยัง Easypanel
|
|
#
|
|
# Usage: ./deploy.sh [project-path] [server] [domain]
|
|
#
|
|
# Requirements:
|
|
# - git
|
|
# - npm
|
|
# - easypanel CLI (หรือใช้ web interface)
|
|
#
|
|
#===============================================================================
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Default values
|
|
PROJECT_PATH="${1:-.}"
|
|
SERVER="${2:-}"
|
|
DOMAIN="${3:-}"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Helper functions
|
|
#-------------------------------------------------------------------------------
|
|
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
print_usage() {
|
|
cat << EOF
|
|
Usage: $(basename "$0") [project-path] [server] [domain]
|
|
|
|
Deploy Astro + Payload CMS ไปยัง Easypanel
|
|
|
|
Arguments:
|
|
project-path ที่อยู่ project (default: current directory)
|
|
server ชื่อ easypanel server
|
|
domain domain ที่จะใช้ (เช่น example.com)
|
|
|
|
Examples:
|
|
$(basename "$0") /path/to/project my-server example.com
|
|
$(basename "$0") . openclaw-vps techvision.co.th
|
|
|
|
EOF
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Pre-flight checks
|
|
#-------------------------------------------------------------------------------
|
|
|
|
check_requirements() {
|
|
log_info "ตรวจสอบความต้องการ..."
|
|
|
|
if ! command -v git &> /dev/null; then
|
|
log_error "git ไม่พบ"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v npm &> /dev/null; then
|
|
log_error "npm ไม่พบ"
|
|
exit 1
|
|
fi
|
|
|
|
cd "$PROJECT_PATH"
|
|
|
|
if [ ! -f "package.json" ]; then
|
|
log_error "ไม่พบ package.json"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "astro.config.mjs" ]; then
|
|
log_error "ไม่พบ astro.config.mjs"
|
|
exit 1
|
|
fi
|
|
|
|
log_success "ความต้องการพื้นฐานผ่าน"
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Check git status
|
|
#-------------------------------------------------------------------------------
|
|
|
|
check_git() {
|
|
log_info "ตรวจสอบ git..."
|
|
|
|
if [ ! -d ".git" ]; then
|
|
log_warning "ไม่พบ .git directory"
|
|
log_info "กำลังสร้าง git repo..."
|
|
git init
|
|
git add .
|
|
git commit -m "Initial commit"
|
|
log_success "สร้าง git repo เสร็จสมบูรณ์"
|
|
else
|
|
log_success "พบ git repo"
|
|
fi
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Build project
|
|
#-------------------------------------------------------------------------------
|
|
|
|
build_project() {
|
|
log_info "Build project..."
|
|
|
|
cd "$PROJECT_PATH"
|
|
|
|
# Install dependencies
|
|
log_info "ติดตั้ง dependencies..."
|
|
npm install
|
|
|
|
# Build
|
|
log_info "กำลัง build..."
|
|
npm run build
|
|
|
|
if [ $? -eq 0 ]; then
|
|
log_success "Build เสร็จสมบูรณ์"
|
|
else
|
|
log_error "Build ล้มเหลว"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Check build output
|
|
#-------------------------------------------------------------------------------
|
|
|
|
check_build_output() {
|
|
log_info "ตรวจสอบ build output..."
|
|
|
|
cd "$PROJECT_PATH"
|
|
|
|
if [ -d "dist" ]; then
|
|
local file_count=$(find dist -type f | wc -l)
|
|
local size=$(du -sh dist | cut -f1)
|
|
log_success "พบ dist/ ($file_count files, $size)"
|
|
else
|
|
log_error "ไม่พบ dist/ directory"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Deploy instructions
|
|
#-------------------------------------------------------------------------------
|
|
|
|
show_deploy_instructions() {
|
|
echo ""
|
|
echo "=============================================="
|
|
echo " Deploy Instructions"
|
|
echo "=============================================="
|
|
echo ""
|
|
echo " Project: $PROJECT_PATH"
|
|
echo " Server: $SERVER"
|
|
echo " Domain: $DOMAIN"
|
|
echo ""
|
|
echo " ขั้นตอนการ deploy บน Easypanel:"
|
|
echo ""
|
|
echo " 1. เปิด Easypanel dashboard"
|
|
echo " 2. สร้าง project ใหม่"
|
|
echo " 3. เลือก 'Deploy from Git'"
|
|
echo " 4. ใส่ git repo URL"
|
|
echo " 5. ตั้งค่า environment variables:"
|
|
echo " - PAYLOAD_SECRET"
|
|
echo " - DATABASE_URL"
|
|
echo " 6. ตั้งค่า domain: $DOMAIN"
|
|
echo " 7. Deploy"
|
|
echo ""
|
|
echo " หรือใช้ easypanel CLI:"
|
|
echo ""
|
|
echo " ep project create --name $PROJECT_NAME --server $SERVER"
|
|
echo " ep project deploy \$PROJECT_ID --git"
|
|
echo ""
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Create deploy config
|
|
#-------------------------------------------------------------------------------
|
|
|
|
create_deploy_config() {
|
|
log_info "สร้าง deploy config..."
|
|
|
|
cd "$PROJECT_PATH"
|
|
|
|
mkdir -p .easypanel
|
|
|
|
cat > .easypanel/deploy.json << EOF
|
|
{
|
|
"name": "$PROJECT_NAME",
|
|
"server": "$SERVER",
|
|
"domain": "$DOMAIN",
|
|
"build": {
|
|
"command": "npm run build",
|
|
"output": "dist"
|
|
},
|
|
"environment": {
|
|
"NODE_ENV": "production"
|
|
},
|
|
"required_env": [
|
|
"PAYLOAD_SECRET",
|
|
"DATABASE_URL"
|
|
]
|
|
}
|
|
EOF
|
|
|
|
log_success "สร้าง .easypanel/deploy.json เสร็จสมบูรณ์"
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Main
|
|
#-------------------------------------------------------------------------------
|
|
|
|
main() {
|
|
echo "=============================================="
|
|
echo " Deploy Tool"
|
|
echo " Astro + Payload CMS -> Easypanel"
|
|
echo "=============================================="
|
|
echo ""
|
|
|
|
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
|
|
print_usage
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$SERVER" ]; then
|
|
log_info "ไม่ได้ระบุ server - จะแสดงวิธี deploy"
|
|
SERVER="<your-server>"
|
|
fi
|
|
|
|
if [ -z "$DOMAIN" ]; then
|
|
DOMAIN="<your-domain.com>"
|
|
fi
|
|
|
|
PROJECT_NAME=$(basename "$PROJECT_PATH")
|
|
|
|
check_requirements
|
|
check_git
|
|
build_project
|
|
check_build_output
|
|
create_deploy_config
|
|
show_deploy_instructions
|
|
|
|
echo ""
|
|
echo "=============================================="
|
|
log_success "พร้อม deploy!"
|
|
echo "=============================================="
|
|
}
|
|
|
|
main "$@"
|