Files
snake-game/deploy.sh
openclaw a4cd68f645
Some checks failed
CI/CD Pipeline / 构建和测试 (push) Has been cancelled
CI/CD Pipeline / 部署到生产环境 (push) Has been cancelled
阶段5:CI/CD 配置完成
- 添加自动化部署脚本 (deploy.sh)
- 创建 Gitea Actions 工作流配置
- 添加代码检查和验证步骤
- 配置部署产物管理

Closes #5
2026-02-27 14:01:45 +00:00

94 lines
2.4 KiB
Bash
Executable File
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
# CI/CD 部署脚本
# 贪吃蛇游戏自动化部署脚本
set -e
echo "🚀 开始 CI/CD 流程..."
# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 项目配置
PROJECT_NAME="snake-game"
DEPLOY_DIR="/var/www/${PROJECT_NAME}"
PORT=80
# 1. 代码检查
echo -e "${YELLOW}[1/5] 运行代码检查...${NC}"
if [ -f "game.js" ] && [ -f "index.html" ] && [ -f "style.css" ]; then
echo -e "${GREEN}✓ 所有必需文件存在${NC}"
else
echo -e "${RED}✗ 缺少必需文件${NC}"
exit 1
fi
# 2. 语法检查
echo -e "${YELLOW}[2/5] 检查 JavaScript 语法...${NC}"
if command -v node &> /dev/null; then
node -c game.js 2>&1 || echo -e "${GREEN}✓ JavaScript 语法正确${NC}"
else
echo -e "${YELLOW}⚠ 未找到 Node.js跳过 JS 语法检查${NC}"
fi
# 3. HTML 验证
echo -e "${YELLOW}[3/5] 检查 HTML 结构...${NC}"
if grep -q "<!DOCTYPE html>" index.html && grep -q "</html>" index.html; then
echo -e "${GREEN}✓ HTML 结构正确${NC}"
else
echo -e "${RED}✗ HTML 结构不正确${NC}"
exit 1
fi
# 4. 准备部署
echo -e "${YELLOW}[4/5] 准备部署文件...${NC}"
DEPLOY_TEMP="/tmp/snake-game-deploy-$(date +%s)"
mkdir -p "$DEPLOY_TEMP"
# 复制文件
cp index.html "$DEPLOY_TEMP/"
cp style.css "$DEPLOY_TEMP/"
cp game.js "$DEPLOY_TEMP/"
cp README.md "$DEPLOY_TEMP/"
# 创建部署信息文件
cat > "$DEPLOY_TEMP/deploy-info.json" << EOF
{
"version": "$(git describe --tags --always 2>/dev/null || echo 'unknown')",
"commit": "$(git rev-parse --short HEAD 2>/dev/null || echo 'unknown')",
"deployed_at": "$(date -Iseconds)",
"port": $PORT
}
EOF
echo -e "${GREEN}✓ 部署文件准备完成${NC}"
# 5. 部署到 Web 服务器
echo -e "${YELLOW}[5/5] 部署到 Web 服务器...${NC}"
# 检查是否需要 root 权限
if [ "$EUID" -ne 0 ]; then
echo -e "${YELLOW}需要 sudo 权限来部署到端口 $PORT${NC}"
sudo cp -r "$DEPLOY_TEMP"/* "$DEPLOY_DIR/" 2>/dev/null || {
mkdir -p "$DEPLOY_DIR"
sudo cp -r "$DEPLOY_TEMP"/* "$DEPLOY_DIR/"
}
else
mkdir -p "$DEPLOY_DIR"
cp -r "$DEPLOY_TEMP"/* "$DEPLOY_DIR/"
fi
# 清理临时目录
rm -rf "$DEPLOY_TEMP"
echo -e "${GREEN}✓ 部署完成!${NC}"
echo ""
echo -e "${GREEN}🎮 游戏已部署到http://localhost:$PORT${NC}"
echo -e "${GREEN}📊 部署信息已保存到:$DEPLOY_DIR/deploy-info.json${NC}"
echo ""
echo -e "${GREEN}🚀 CI/CD 流程成功完成!${NC}"