Files
novalon-website/scripts/disk-optimization-long-term.sh
T
张翔 3ce31d3178
ci/woodpecker/push/woodpecker Pipeline failed
feat: 优化CI/CD流程 - 自定义工具镜像、修复TLS问题、添加镜像清理脚本
- 创建轻量级工具镜像(novalon/tools:1.0.0)避免重复安装工具
- 修复Docker TLS handshake timeout问题
- 更新CI配置使用registry.f.novalon.cn/novalon/tools:1.0.0
- 添加自动清理脚本用于磁盘和镜像管理
2026-03-31 17:27:43 +08:00

119 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# 生产环境磁盘长期优化脚本
# 作者:张翔
# 日期:2026-03-30
echo "🚀 开始执行生产环境磁盘长期优化..."
# 1. 优化Git仓库(清理大文件历史)
echo "🔍 优化Git仓库..."
if [ -d ".git" ]; then
# 查找Git历史中的大文件
echo "📊 Git历史大文件分析:"
git rev-list --objects --all | \
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
sed -n 's/^blob //p' | \
sort --numeric-sort --key=2 | \
tail -10 | \
cut -c 1-12,41- | \
$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
echo "💡 如需清理Git历史大文件,请运行:"
echo " git filter-branch --tree-filter 'rm -f 大文件路径' HEAD"
echo " git reflog expire --expire=now --all && git gc --prune=now --aggressive"
fi
# 2. 优化依赖包管理
echo "📦 优化依赖包管理..."
if [ -f "package.json" ]; then
# 检查是否有未使用的依赖
echo "🔍 检查未使用的依赖..."
npx depcheck 2>/dev/null || echo "⚠️ depcheck未安装,跳过依赖检查"
# 检查是否有重复依赖
echo "🔍 检查重复依赖..."
npm ls 2>/dev/null | grep "deduped" || echo "✅ 依赖包已优化"
# 建议:使用pnpm或yarn进行依赖管理以减少磁盘占用
echo "💡 建议使用pnpm替代npm,可节省40-50%磁盘空间"
fi
# 3. 配置构建优化
echo "🔧 配置构建优化..."
if [ -f "next.config.ts" ]; then
echo "💡 Next.js构建优化建议:"
echo " - 启用构建缓存:配置experimental.turbo.buildCaching"
echo " - 优化图片处理:使用next/image的优化配置"
echo " - 启用代码分割:合理配置dynamic imports"
fi
# 4. 设置自动化清理机制
echo "🤖 设置自动化清理机制..."
# 创建定时清理脚本
cat > /tmp/cleanup-cron.sh << 'EOF'
#!/bin/bash
# 自动化磁盘清理脚本(可加入crontab)
LOG_FILE="./logs/cleanup-$(date +%Y%m%d).log"
echo "[$(date)] 开始自动化清理" >> "$LOG_FILE"
# 清理构建缓存
find . -name "*.tsbuildinfo" -delete 2>/dev/null
find . -name "build.log" -delete 2>/dev/null
# 清理测试报告(保留最近3天)
find . -name "playwright-report" -type d -mtime +3 -exec rm -rf {} \; 2>/dev/null
find . -name "coverage" -type d -mtime +3 -exec rm -rf {} \; 2>/dev/null
find . -name "test-results" -type d -mtime +3 -exec rm -rf {} \; 2>/dev/null
# 清理日志文件(保留最近7天)
find ./logs -name "*.log" -type f -mtime +7 -delete 2>/dev/null
echo "[$(date)] 清理完成" >> "$LOG_FILE"
EOF
chmod +x /tmp/cleanup-cron.sh
mv /tmp/cleanup-cron.sh ./scripts/auto-cleanup.sh
echo "✅ 自动化清理脚本已创建:./scripts/auto-cleanup.sh"
# 5. 配置.gitignore优化
echo "📋 优化.gitignore配置..."
if [ -f ".gitignore" ]; then
# 检查是否已包含必要的忽略规则
if ! grep -q "playwright-report" .gitignore; then
echo "playwright-report" >> .gitignore
echo "✅ 已添加playwright-report到.gitignore"
fi
if ! grep -q "coverage" .gitignore; then
echo "coverage" >> .gitignore
echo "✅ 已添加coverage到.gitignore"
fi
if ! grep -q "test-results" .gitignore; then
echo "test-results" >> .gitignore
echo "✅ 已添加test-results到.gitignore"
fi
if ! grep -q "*.tsbuildinfo" .gitignore; then
echo "*.tsbuildinfo" >> .gitignore
echo "✅ 已添加*.tsbuildinfo到.gitignore"
fi
fi
# 6. 显示优化建议
echo ""
echo "📊 长期优化建议汇总:"
echo "✅ 1. Git优化:清理历史大文件,使用git filter-branch"
echo "✅ 2. 依赖管理:使用pnpm替代npm,定期检查未使用依赖"
echo "✅ 3. 构建优化:配置Next.js构建缓存和代码分割"
echo "✅ 4. 自动化:设置定时清理脚本,避免磁盘占用累积"
echo "✅ 5. 配置优化:完善.gitignore,避免提交大文件"
echo ""
echo "🚀 长期优化方案已配置完成!"
echo "💡 下一步:运行立即清理脚本,然后实施长期优化措施"