This commit is contained in:
Vaica committed 2026-06-24 13:50:26 +08:00
1 parent 47979a6761
commit 442ac419cb
4 files changed
+164 -1

No files matched your search

+103
View File
@@ -0,0 +1,103 @@
#!/bin/bash
# Write Server Docker 一键部署脚本
# 用法: ./deploy.sh 或 cd /hugo && bash write-server/deploy.sh
set -e
# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo ""
echo "==================================="
echo " Write Server 自动部署"
echo "==================================="
echo ""
# 检测脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# 1. 检查是否有更新
echo -e "${YELLOW}[1/5]${NC} 检查代码更新..."
CHANGES_BEFORE=$(git rev-parse HEAD)
git pull origin main
CHANGES_AFTER=$(git rev-parse HEAD)
if [ "$CHANGES_BEFORE" = "$CHANGES_AFTER" ]; then
echo -e "${GREEN}✓${NC} 代码已是最新,无需重新构建"
exit 0
fi
echo -e "${GREEN}✓${NC} 检测到新代码,开始构建..."
# 2. 停止旧容器
echo ""
echo -e "${YELLOW}[2/5]${NC} 停止旧容器..."
docker compose down
echo -e "${GREEN}✓${NC} 旧容器已停止"
# 3. 重新构建
echo ""
echo -e "${YELLOW}[3/5]${NC} 重新构建镜像..."
docker compose build --no-cache
echo -e "${GREEN}✓${NC} 镜像构建完成"
# 4. 启动新容器
echo ""
echo -e "${YELLOW}[4/5]${NC} 启动新容器..."
docker compose up -d
echo -e "${GREEN}✓${NC} 容器已启动"
# 5. 等待服务就绪
echo ""
echo -e "${YELLOW}[5/5]${NC} 等待服务就绪..."
sleep 5
# 健康检查
echo ""
echo "==================================="
echo " 检查服务状态"
echo "==================================="
echo ""
# 检查容器状态
if docker compose ps | grep -q "Up"; then
echo -e "${GREEN}✓${NC} 容器运行正常"
else
echo -e "${RED}✗${NC} 容器启动失败"
echo ""
echo "查看日志:"
echo " docker compose logs -f"
exit 1
fi
# 检查 Bot 启动日志
echo ""
echo "检查 Bot 启动状态..."
sleep 3
if docker compose logs --tail 20 2>&1 | grep -q "\[bot\]"; then
echo -e "${GREEN}✓${NC} Telegram Bot 已启动"
else
echo -e "${YELLOW}⚠${NC} 未检测到 Bot 启动日志(可能需要检查配置)"
fi
# 检查 comment notifier
if docker compose logs --tail 20 2>&1 | grep -q "\[comment-notify\]"; then
echo -e "${GREEN}✓${NC} 评论通知已启动"
else
echo -e "${YELLOW}⚠${NC} 未检测到评论通知日志"
fi
echo ""
echo "==================================="
echo -e " ${GREEN}部署完成!${NC}"
echo "==================================="
echo ""
echo "常用命令:"
echo " 查看日志: docker compose logs -f"
echo " 重启服务: docker compose restart"
echo " 停止服务: docker compose down"
echo ""
-1
View File
@@ -11,7 +11,6 @@ const nextConfig: NextConfig = {
serverActions: {
bodySizeLimit: "10mb",
},
instrumentationHook: true, // 启用 instrumentation,用于自动启动 Bot
},
// 压缩配置
+41
View File
@@ -0,0 +1,41 @@
#!/bin/bash
# 安装 Git Hook 脚本
# 用法: ./scripts/install-hooks.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
GIT_HOOKS_DIR="$REPO_ROOT/.git/hooks"
echo ""
echo "==================================="
echo " 安装 Git Hooks"
echo "==================================="
echo ""
# 确保 hooks 目录存在
mkdir -p "$GIT_HOOKS_DIR"
# 复制 post-merge hook
if [ -f "$SCRIPT_DIR/post-merge" ]; then
cp "$SCRIPT_DIR/post-merge" "$GIT_HOOKS_DIR/post-merge"
chmod +x "$GIT_HOOKS_DIR/post-merge"
echo "✓ 已安装 post-merge hook"
else
echo "✗ 未找到 post-merge 脚本"
exit 1
fi
echo ""
echo "==================================="
echo " 安装完成!"
echo "==================================="
echo ""
echo "现在在项目根目录执行 git pull 时,"
echo "如果 write-server 有更新,会自动触发 Docker 构建。"
echo ""
echo "手动执行部署:"
echo " cd $REPO_ROOT/write-server"
echo " ./deploy.sh"
echo ""
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
# Git post-merge hook
# 在 git pull 成功后自动触发 Docker 重建
# 获取项目根目录
REPO_ROOT="$(git rev-parse --show-toplevel)"
# 检查是否是 write-server 目录更新
if [ -f "$REPO_ROOT/write-server/package.json" ]; then
echo ""
echo "==================================="
echo " 检测到 write-server 更新"
echo " 自动开始 Docker 构建..."
echo "==================================="
echo ""
# 切换到 write-server 目录并执行部署
cd "$REPO_ROOT/write-server"
./deploy.sh
fi