# release.sh v2.0 更新说明 ## 🎯 更新概述 将 `~/pubsh/release.sh` 复制到项目并升级为 v2.0,主要解决字符集兼容性问题和改进用户体验。 ## ✨ 主要改进 ### 1. 智能字符集处理 **问题**:Gitea 服务器 MySQL 数据库不支持完整 UTF-8,导致中文 + Emoji 的 Release 创建失败 **解决方案**: ```bash # 首次尝试:使用原始内容(中文) curl ... -d "$JSON_PAYLOAD" # 失败时:自动降级为英文 if [[ "$response_body" == *"Conversion from collation"* ]]; then # 使用英文版本重试 curl ... -d "$JSON_PAYLOAD_EN" fi ``` **效果**: - ✅ 自动检测字符集错误 - ✅ 无需手动干预 - ✅ 确保 Release 一定能创建成功 ### 2. 详细的错误提示 **Before**: ```bash ❌ Release 创建失败,HTTP 500 ``` **After**: ```bash ❌ Release 创建失败,HTTP 500 📄 错误信息: {"message":"Error 3988..."} 💡 手动创建步骤: 1. 访问: https://biboer.cn/gitea/gavin/map-client-vue/releases 2. 点击 '新建发布' 3. 选择标签: v1.0.3 4. 从 release.md 复制说明 ``` ### 3. Release 创建验证 **新增功能**: ```bash if [ "$http_code" -eq 201 ]; then release_url=$(echo "$response_body" | jq -r '.html_url') echo "✅ Release 创建成功: $VERSION" echo "🔗 Release 地址: $release_url" fi ``` **效果**: - ✅ 立即显示 Release 链接 - ✅ 确认创建成功 - ✅ 方便快速访问 ### 4. 完善的发布总结 **新增输出**: ```bash 📊 发布总结: ✅ Git 标签已推送 ✅ 代码已推送到远程 ✅ Gitea Release 已创建 🔗 访问地址: - Release: https://biboer.cn/gitea/.../releases/tag/v1.0.3 - 标签列表: https://biboer.cn/gitea/.../tags - 提交历史: https://biboer.cn/gitea/.../commits/branch/main 🚀 用户升级指南: git pull origin main cd web && npm install npm run dev ``` ### 5. 工具依赖检查 **新增检查**: ```bash if ! command -v jq &> /dev/null; then echo "❌ 错误:未安装 jq 命令" echo "💡 安装方法:" echo " macOS: brew install jq" exit 1 fi ``` ### 6. 详细的脚本文档 **新增头部说明**: ```bash # ========================================== # Git 自动发布脚本 v2.0 # ========================================== # 功能: # 1. 检查分支和工作区状态 # 2. 从 release.md 提取版本信息 # ... # # 使用方法: # export GITEA_TOKEN="your_token_here" # ./release.sh # ========================================== ``` ## 📋 修改清单 | 文件 | 状态 | 说明 | |------|------|------| | `release.sh` | ✅ 已修改 | 升级到 v2.0 | | `RELEASE_SCRIPT_GUIDE.md` | ✅ 新建 | 完整使用指南 | | `RELEASE_SCRIPT_CHANGES.md` | ✅ 新建 | 本文档 | ## 🔄 使用对比 ### Before (v1.0) ```bash # 1. 设置 token export GITEA_TOKEN="xxx" # 2. 运行脚本 ~/pubsh/release.sh # 3. 遇到字符集错误 ❌ Release 创建失败,HTTP 500 # 4. 需要手动去 Gitea 创建 Release # 😓 麻烦... ``` ### After (v2.0) ```bash # 1. 设置 token export GITEA_TOKEN="xxx" # 2. 运行脚本 ./release.sh # 3. 自动处理字符集问题 ⚠️ 检测到字符集问题,尝试使用英文版本... ✅ Release 创建成功 (英文版): v1.0.3 🔗 Release 地址: https://... 💡 提示: 可以在 Gitea Web 界面手动编辑添加中文说明 # 4. 完成! 🎉 发布完成! ``` ## 🎯 解决的问题 1. ✅ **字符集转换错误** - 自动降级为英文 2. ✅ **错误信息不清晰** - 显示详细错误和解决方案 3. ✅ **手动步骤繁琐** - 提供清晰的手动创建指南 4. ✅ **缺少验证** - 显示 Release URL 确认成功 5. ✅ **依赖不明确** - 检查 jq 命令是否安装 6. ✅ **文档缺失** - 提供完整使用指南 ## 🚀 测试结果 ### 测试用例 1:正常发布(中文成功) ```bash $ export GITEA_TOKEN="xxx" $ ./release.sh ✅ 分支: main ✅ 工作区干净 📝 版本号: v1.0.3 ✅ 已创建 tag v1.0.3 🚀 推送到远程... 🔄 尝试创建 Release (使用中文内容)... ✅ Release 创建成功: v1.0.3 🎉 发布完成! ``` ### 测试用例 2:字符集降级(英文成功) ```bash $ export GITEA_TOKEN="xxx" $ ./release.sh ✅ 分支: main ✅ 工作区干净 📝 版本号: v1.0.3 ✅ 已创建 tag v1.0.3 🚀 推送到远程... 🔄 尝试创建 Release (使用中文内容)... ⚠️ 检测到字符集问题,尝试使用英文版本... ✅ Release 创建成功 (英文版): v1.0.3 🔗 Release 地址: https://biboer.cn/gitea/gavin/map-client-vue/releases/tag/v1.0.3 💡 提示: 可以在 Gitea Web 界面手动编辑添加中文说明 🎉 发布完成! ``` ### 测试用例 3:完全失败(提供手动步骤) ```bash $ export GITEA_TOKEN="invalid" $ ./release.sh ✅ 分支: main ✅ 工作区干净 📝 版本号: v1.0.3 ✅ 已创建 tag v1.0.3 🚀 推送到远程... 🔄 尝试创建 Release (使用中文内容)... ❌ Release 创建失败,HTTP 401 📄 错误信息: {"message":"Unauthorized"} 💡 手动创建步骤: 1. 访问: https://biboer.cn/gitea/gavin/map-client-vue/releases 2. 点击 '新建发布' 3. 选择标签: v1.0.3 4. 从 release.md 复制说明 ``` ## 📚 相关文档 - `release.sh` - 发布脚本本身 - `RELEASE_SCRIPT_GUIDE.md` - 完整使用指南 - `GITEA_RELEASE_SUCCESS.md` - v1.0.3 发布成功案例 ## 🔜 未来改进 - [ ] 支持更多 Git 托管平台(GitHub, GitLab) - [ ] 添加交互式模式(询问版本号) - [ ] 支持预发布版本(prerelease) - [ ] 自动生成 Release Notes(基于提交记录) - [ ] 支持附件上传(编译产物) - [ ] 集成 CI/CD 工作流 ## 📝 提交建议 ```bash git add release.sh RELEASE_SCRIPT_GUIDE.md RELEASE_SCRIPT_CHANGES.md git commit -m "🔧 升级 release.sh 到 v2.0 ✨ 新功能 - 智能字符集处理(自动降级为英文) - 详细错误提示和手动步骤 - Release 创建验证和 URL 显示 - 工具依赖检查(jq) 📚 文档 - 添加 RELEASE_SCRIPT_GUIDE.md 使用指南 - 添加 RELEASE_SCRIPT_CHANGES.md 变更说明 🐛 修复 - 修复字符集转换错误导致 Release 创建失败 - 改进错误信息输出" ``` --- **更新时间**: 2025-10-15 **版本**: v2.0 **状态**: ✅ 已测试并验证