添加自动部署配置
- 服务器一键配置脚本 - 部署脚本 (支持测试/正式环境) - Webhook 接收器 - 完整使用文档
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
# kb-web 自动部署脚本
|
||||
# 用法: ./deploy.sh [test|prod] [branch]
|
||||
|
||||
set -e
|
||||
|
||||
DEPLOY_ENV=${1:-test}
|
||||
BRANCH=${2:-main}
|
||||
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||
|
||||
# 配置
|
||||
case $DEPLOY_ENV in
|
||||
test)
|
||||
DEPLOY_DIR="/var/www/kb-web-test"
|
||||
BACKUP_DIR="/var/www/kb-web-test-backups"
|
||||
;;
|
||||
prod)
|
||||
DEPLOY_DIR="/var/www/kb-web-prod"
|
||||
BACKUP_DIR="/var/www/kb-web-prod-backups"
|
||||
;;
|
||||
*)
|
||||
echo "用法: $0 [test|prod] [branch]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
REPO_URL="ssh://sc-gitea@192.168.1.22:2223/starmen1265/kb-web.git"
|
||||
LOG_FILE="/var/log/kb-web-deploy.log"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
log "========== 开始部署 $DEPLOY_ENV 环境 =========="
|
||||
log "分支: $BRANCH"
|
||||
log "目标目录: $DEPLOY_DIR"
|
||||
|
||||
# 创建目录
|
||||
mkdir -p "$DEPLOY_DIR" "$BACKUP_DIR" "$(dirname "$LOG_FILE")"
|
||||
|
||||
# 备份当前版本
|
||||
if [ -d "$DEPLOY_DIR/.git" ]; then
|
||||
log "备份当前版本..."
|
||||
CURRENT_COMMIT=$(cd "$DEPLOY_DIR" && git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
tar -czf "$BACKUP_DIR/backup_${CURRENT_COMMIT}_${TIMESTAMP}.tar.gz" -C "$DEPLOY_DIR" . 2>/dev/null || true
|
||||
# 只保留最近5个备份
|
||||
cd "$BACKUP_DIR" && ls -t | tail -n +6 | xargs -r rm -f
|
||||
fi
|
||||
|
||||
# 拉取代码
|
||||
if [ -d "$DEPLOY_DIR/.git" ]; then
|
||||
log "更新代码..."
|
||||
cd "$DEPLOY_DIR"
|
||||
git fetch origin
|
||||
git reset --hard "origin/$BRANCH"
|
||||
else
|
||||
log "克隆代码..."
|
||||
git clone -b "$BRANCH" "$REPO_URL" "$DEPLOY_DIR"
|
||||
cd "$DEPLOY_DIR"
|
||||
fi
|
||||
|
||||
# 设置权限
|
||||
log "设置权限..."
|
||||
chown -R www-data:www-data "$DEPLOY_DIR" 2>/dev/null || chown -R nginx:nginx "$DEPLOY_DIR" 2>/dev/null || true
|
||||
find "$DEPLOY_DIR" -type d -exec chmod 755 {} \;
|
||||
find "$DEPLOY_DIR" -type f -exec chmod 644 {} \;
|
||||
|
||||
# 记录部署信息
|
||||
DEPLOY_INFO="$DEPLOY_DIR/.deploy_info"
|
||||
cat > "$DEPLOY_INFO" << EOF
|
||||
环境: $DEPLOY_ENV
|
||||
分支: $BRANCH
|
||||
提交: $(git rev-parse HEAD)
|
||||
时间: $(date '+%Y-%m-%d %H:%M:%S')
|
||||
部署者: webhook
|
||||
EOF
|
||||
|
||||
log "部署完成!"
|
||||
log "提交: $(git log -1 --oneline)"
|
||||
log "=========================================="
|
||||
Reference in New Issue
Block a user