Add one-click deployment script (build.sh)
This commit is contained in:
parent
20df29e524
commit
3796dffd27
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="verify_delivery"
|
||||||
|
GIT_REPO="git@git.opencomputing.cn:yumoqing/verify_delivery.git"
|
||||||
|
SERVICE_PORT=9085
|
||||||
|
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