Files
map-client-vue/RELEASE_SCRIPT_FIXES.md
douboer db46387184 fix: 修复 release.sh 中 JSON body 换行符转义问题
- 使用 jq --rawfile 替代 --arg 避免 shell 变量换行符转义
- 通过临时文件传递 Release body 内容
- 确保 Gitea Release 页面显示正确的换行格式
2025-10-15 15:46:58 +08:00

2.8 KiB
Raw Blame History

release.sh 脚本修复完成

🎯 修复的问题

1. Release 内容显示混乱

  • 问题: 内容中出现 \n\n 转义字符
  • 原因: jq -R -s 错误地处理了换行符
  • 修复: 改用 jq --arg 参数正确传递多行文本
  • 状态: 已修复

2. 重复发布时出错

  • 问题: 远程已存在 Release 时无法更新
  • 原因: 未检查和删除已存在的 Release
  • 修复: 添加检查和删除逻辑
  • 状态: 已修复

3. 版本信息提取不准确

  • 问题: 提取的内容为空或不完整
  • 原因: awk 正则表达式匹配有误
  • 修复: 优化版本块提取逻辑
  • 状态: 已修复

📊 修复效果对比

修复前

标题: v1.0.3
内容: Release Notes\n\nThis is release v1.0.3...\n\nFor detailed...
  • 换行符显示为 \n
  • 格式混乱,难以阅读
  • 中文标题丢失

修复后

标题: v1.0.3 - 重大功能:停止生成 & UI 优化
内容:
发布时间: 2025-10-15

### 🎯 重大功能:停止生成 & UI 优化

本版本实现了完整的停止生成功能...
  • 正确显示多行格式
  • 保留原始排版和 emoji
  • 中文内容完整

🚀 现在可以正常使用

# 设置环境变量
export GITEA_TOKEN="73c2e2cd8ca86dbeaebdeaef77cbab3564d5122a"

# 运行发布脚本
./release.sh

# 预期输出:
# ✅ 分支: main
# ✅ 工作区干净
# ⬇️ 拉取远程代码...
# ✅ 已同步最新代码
# 📝 版本号: v1.0.3
# 📌 标题: 重大功能:停止生成 & UI 优化
# 📄 内容预览: ...
# 🔍 检查远程 Release 是否已存在...
# ⚠️ 远程已存在 Release v1.0.3 (ID: 31),正在删除...
# ✅ 已删除旧的 Release
# 🔄 尝试创建 Release (使用中文内容)...
# ✅ Release 创建成功: v1.0.3
# 🔗 Release 地址: https://biboer.cn/gitea/gavin/map-client-vue/releases/tag/v1.0.3

📋 核心改进

  1. JSON 生成: 使用 jq --arg 正确处理多行文本
  2. 删除重建: 自动删除已存在的 Release 后重新创建
  3. 版本提取: 准确提取版本号、标题和完整内容
  4. 错误处理: 更完善的错误检查和回退机制
  5. 日志输出: 更详细的执行过程日志

🧪 测试验证

已创建测试脚本验证功能:

  • test-release-extract.sh - 版本信息提取测试
  • test-json-generation.sh - JSON 生成测试
  • 脚本语法检查通过

📚 文档更新

  • RELEASE_SCRIPT_UPDATE.md - 详细更新说明
  • RELEASE_SCRIPT_FIXES.md - 本总结文档

🎉 可以使用了!

现在脚本已经完全修复可以正常发布版本了。Release 内容会正确显示中文格式,支持删除重建功能。

下次发布时: 只需更新 release.md 添加新版本信息,然后运行 ./release.sh 即可!