Add one-click deployment script (build.sh)
This commit is contained in:
parent
9c95b787b3
commit
43127c93d3
150
build.sh
Executable file
150
build.sh
Executable file
@ -0,0 +1,150 @@
|
||||
#!/bin/bash
|
||||
# 一键部署脚本模板
|
||||
# 用法: ./build.sh [deploy|update|stop|status]
|
||||
|
||||
set -e
|
||||
|
||||
SERVICE_NAME="ktv-synth-service"
|
||||
GIT_REPO="git@git.opencomputing.cn:yumoqing/ktv-synth-service.git"
|
||||
SERVICE_PORT=9084
|
||||
DEPLOY_DIR="/data/ymq/$SERVICE_NAME"
|
||||
VENV_PATH="/data/ymq/wan22-service/py3"
|
||||
GPU_ID="CPU"
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
check_deps() {
|
||||
command -v git >/dev/null || { log_error "git not found"; exit 1; }
|
||||
[ -f "$VENV_PATH/bin/python" ] || { log_error "Python venv not found: $VENV_PATH"; exit 1; }
|
||||
}
|
||||
|
||||
deploy() {
|
||||
log_info "Deploying $SERVICE_NAME..."
|
||||
|
||||
# 检查依赖
|
||||
check_deps
|
||||
|
||||
# 克隆或更新代码
|
||||
if [ -d "$DEPLOY_DIR/.git" ]; then
|
||||
log_info "Updating existing deployment..."
|
||||
cd "$DEPLOY_DIR"
|
||||
git fetch origin
|
||||
git reset --hard origin/master
|
||||
else
|
||||
log_info "Cloning repository..."
|
||||
cd /data/ymq
|
||||
git clone "$GIT_REPO" "$SERVICE_NAME"
|
||||
cd "$DEPLOY_DIR"
|
||||
fi
|
||||
|
||||
# 创建必要目录
|
||||
mkdir -p "$DEPLOY_DIR/app/api/status"
|
||||
mkdir -p "$DEPLOY_DIR/app/api/submit"
|
||||
mkdir -p "$DEPLOY_DIR/app/api/task"
|
||||
|
||||
# 设置权限
|
||||
chmod +x start.sh stop.sh 2>/dev/null || true
|
||||
|
||||
# 启动服务
|
||||
start_service
|
||||
}
|
||||
|
||||
start_service() {
|
||||
log_info "Starting $SERVICE_NAME on port $SERVICE_PORT..."
|
||||
|
||||
# 停止旧进程
|
||||
if [ -f stop.sh ]; then
|
||||
bash stop.sh 2>/dev/null || true
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
# 启动新进程
|
||||
bash start.sh
|
||||
|
||||
# 等待启动
|
||||
sleep 3
|
||||
|
||||
# 验证
|
||||
if ss -tlnp | grep -q ":$SERVICE_PORT "; then
|
||||
log_info "✓ Service started successfully"
|
||||
verify_api
|
||||
else
|
||||
log_error "✗ Service failed to start"
|
||||
log_error "Check logs: $DEPLOY_DIR/nohup.out"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
verify_api() {
|
||||
log_info "Verifying API endpoints..."
|
||||
|
||||
# 检查 status endpoint
|
||||
if curl -s "http://127.0.0.1:$SERVICE_PORT/api/status" | grep -q "service"; then
|
||||
log_info "✓ /api/status OK"
|
||||
else
|
||||
log_warn "✗ /api/status failed"
|
||||
fi
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
log_info "Stopping $SERVICE_NAME..."
|
||||
if [ -f "$DEPLOY_DIR/stop.sh" ]; then
|
||||
cd "$DEPLOY_DIR"
|
||||
bash stop.sh
|
||||
log_info "✓ Service stopped"
|
||||
else
|
||||
log_warn "stop.sh not found"
|
||||
fi
|
||||
}
|
||||
|
||||
show_status() {
|
||||
echo "=== $SERVICE_NAME Status ==="
|
||||
echo "Port: $SERVICE_PORT"
|
||||
echo "Deploy Dir: $DEPLOY_DIR"
|
||||
echo ""
|
||||
|
||||
# 检查进程
|
||||
if ss -tlnp | grep -q ":$SERVICE_PORT "; then
|
||||
echo -e "Status: ${GREEN}RUNNING${NC}"
|
||||
PID=$(ss -tlnp | grep ":$SERVICE_PORT " | grep -oP 'pid=\K[0-9]+')
|
||||
echo "PID: $PID"
|
||||
else
|
||||
echo -e "Status: ${RED}STOPPED${NC}"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 检查 API
|
||||
echo "API Endpoints:"
|
||||
curl -s "http://127.0.0.1:$SERVICE_PORT/api/status" 2>/dev/null | python3 -m json.tool 2>/dev/null || echo " (not responding)"
|
||||
}
|
||||
|
||||
# 主入口
|
||||
case "${1:-deploy}" in
|
||||
deploy|install)
|
||||
deploy
|
||||
;;
|
||||
update|upgrade)
|
||||
deploy
|
||||
;;
|
||||
stop)
|
||||
stop_service
|
||||
;;
|
||||
start)
|
||||
start_service
|
||||
;;
|
||||
status)
|
||||
show_status
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {deploy|update|stop|start|status}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Loading…
x
Reference in New Issue
Block a user