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

98 lines
2.8 KiB
Markdown
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.

# ✅ 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
- 中文内容完整
## 🚀 现在可以正常使用
```bash
# 设置环境变量
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` 即可!