chore: 添加 deploy.sh 自动部署脚本
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
# ==========================================
|
||||
# 花信 自动部署脚本
|
||||
# 用法: ./deploy.sh [环境]
|
||||
# 默认部署到生产服务器
|
||||
# ==========================================
|
||||
set -euo pipefail
|
||||
|
||||
# ----- 配置(根据需要修改)-----
|
||||
REMOTE_HOST="47.102.213.175"
|
||||
REMOTE_USER="root"
|
||||
REMOTE_PATH="/var/www/huaxin/"
|
||||
NGINX_RELOAD="nginx -s reload"
|
||||
# ------------------------------
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log() { echo -e "${CYAN}[deploy]${NC} $1"; }
|
||||
ok() { echo -e "${GREEN}[ ok ]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[ warn ]${NC} $1"; }
|
||||
fail() { echo -e "${RED}[fail ]${NC} $1"; exit 1; }
|
||||
|
||||
# 1. 检查 git 工作区是否干净
|
||||
log "检查 git 工作区..."
|
||||
if ! git diff --quiet HEAD 2>/dev/null; then
|
||||
fail "工作区有未提交的修改,请先 git commit"
|
||||
fi
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
fail "工作区有未跟踪的文件,请先 git add/commit 或添加到 .gitignore"
|
||||
fi
|
||||
ok "工作区干净"
|
||||
|
||||
# 2. 获取版本号
|
||||
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "dev")
|
||||
log "部署版本: ${YELLOW}${VERSION}${NC}"
|
||||
|
||||
# 3. 安装依赖
|
||||
log "安装依赖..."
|
||||
npm install --silent --legacy-peer-deps 2>/dev/null || npm install --legacy-peer-deps
|
||||
ok "依赖就绪"
|
||||
|
||||
# 4. 构建
|
||||
log "构建项目..."
|
||||
npm run build
|
||||
ok "构建完成"
|
||||
|
||||
# 5. 上传到服务器
|
||||
log "上传到 ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}..."
|
||||
ssh "${REMOTE_USER}@${REMOTE_HOST}" "mkdir -p ${REMOTE_PATH}"
|
||||
scp -qr dist/* "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"
|
||||
ok "上传完成"
|
||||
|
||||
# 6. 重载 Nginx
|
||||
log "重载 Nginx..."
|
||||
ssh "${REMOTE_USER}@${REMOTE_HOST}" "nginx -t && ${NGINX_RELOAD}"
|
||||
ok "Nginx 重载完成"
|
||||
|
||||
# 7. 验证
|
||||
sleep 1
|
||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "https://${REMOTE_HOST}/huaxin/")
|
||||
if [ "$HTTP_CODE" = "200" ]; then
|
||||
ok "部署验证通过 (HTTP ${HTTP_CODE})"
|
||||
else
|
||||
warn "部署验证返回 HTTP ${HTTP_CODE},请手动检查"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} 花信 ${VERSION} 部署完成!${NC}"
|
||||
echo -e "${GREEN} https://${REMOTE_HOST}/huaxin/${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
Reference in New Issue
Block a user