Files
lunar-mini/.gitea/scripts/deploy.sh
T
gouki 63bcd9f412
Publish Mini Program Dev Version / publish (push) Successful in 4m10s
refactor(wish-tree): 用 WebGL 重写许愿树
- 移除 Canvas 2D 绘制,改用 WebGL
- 手写着色器实现光照和发光效果
- 树干使用圆柱体变形,带扭曲效果
- 树冠使用多层变形球体,带噪声
- 相机自动旋转,可触摸控制
- 保留陀螺仪和麦克风交互
- 简化场景,只保留一棵祈福树
- 深色主题 UI,金色点缀
2026-08-08 14:08:33 +00:00

133 lines
3.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 自动部署脚本 - 部署到 1Panel Docker 容器
# 使用方法: ./deploy.sh <deploy_package_path>
# deploy_package_path: 部署包路径(如 /ci-artifacts/server-deploy-latest.tar.gz
set -e
DEPLOY_PACKAGE="$1"
CONTAINER_NAME="${CONTAINER_NAME:-lunar-server}"
DEPLOY_DIR="${DEPLOY_DIR:-/opt/lunar/production}"
BACKUP_DIR="${BACKUP_DIR:-/opt/lunar/backups}"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查部署包是否存在
if [ ! -f "$DEPLOY_PACKAGE" ]; then
log_error "部署包不存在: $DEPLOY_PACKAGE"
exit 1
fi
log_info "开始自动部署..."
log_info "部署包: $DEPLOY_PACKAGE"
log_info "目标容器: $CONTAINER_NAME"
log_info "部署目录: $DEPLOY_DIR"
# 创建必要的目录
mkdir -p "$DEPLOY_DIR"
mkdir -p "$BACKUP_DIR"
# 备份当前版本
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_${TIMESTAMP}.tar.gz"
if [ -d "$DEPLOY_DIR/current" ]; then
log_info "备份当前版本到: $BACKUP_FILE"
tar -czf "$BACKUP_FILE" -C "$DEPLOY_DIR" current/ || log_warn "备份失败,继续部署"
fi
# 解压新版本
log_info "解压部署包..."
TEMP_DIR=$(mktemp -d)
tar -xzf "$DEPLOY_PACKAGE" -C "$TEMP_DIR"
# 检查解压后的目录结构
if [ ! -d "$TEMP_DIR/deploy" ]; then
log_error "部署包结构错误:缺少 deploy 目录"
rm -rf "$TEMP_DIR"
exit 1
fi
# 部署新版本
log_info "部署新版本..."
rm -rf "$DEPLOY_DIR/current"
mv "$TEMP_DIR/deploy" "$DEPLOY_DIR/current"
rm -rf "$TEMP_DIR"
# 设置权限
log_info "设置文件权限..."
chmod +x "$DEPLOY_DIR/current/bin/server" || log_warn "设置可执行权限失败"
# 检查 Docker 容器是否存在
if ! docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
log_error "Docker 容器不存在: $CONTAINER_NAME"
log_info "请在 1Panel 中创建容器,或使用以下命令:"
echo ""
echo "docker run -d \\"
echo " --name $CONTAINER_NAME \\"
echo " -v $DEPLOY_DIR/current:/app \\"
echo " -p 8080:8080 \\"
echo " --restart unless-stopped \\"
echo " golang:1.22-bookworm \\"
echo " /app/bin/server"
echo ""
exit 1
fi
# 重启 Docker 容器
log_info "重启 Docker 容器: $CONTAINER_NAME"
if docker restart "$CONTAINER_NAME"; then
log_info "✅ 容器重启成功"
else
log_error "❌ 容器重启失败"
exit 1
fi
# 等待容器启动
log_info "等待容器启动..."
sleep 3
# 检查容器状态
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
log_info "✅ 容器运行正常"
# 显示容器日志(最后 20 行)
log_info "容器日志(最后 20 行):"
docker logs --tail 20 "$CONTAINER_NAME"
else
log_error "❌ 容器未运行"
log_error "容器日志:"
docker logs --tail 50 "$CONTAINER_NAME"
exit 1
fi
# 清理旧备份(保留最近 5 个)
log_info "清理旧备份..."
ls -t "$BACKUP_DIR"/backup_*.tar.gz 2>/dev/null | tail -n +6 | xargs -r rm -f
log_info "✅ 部署完成!"
log_info "备份文件: $BACKUP_FILE"
log_info "部署目录: $DEPLOY_DIR/current"
# 输出部署信息(用于通知)
echo ""
echo "DEPLOY_SUCCESS=true"
echo "DEPLOY_TIME=$TIMESTAMP"
echo "CONTAINER_NAME=$CONTAINER_NAME"