update at 2025-10-15 15:29:17
This commit is contained in:
152
GITEA_RELEASE_SUCCESS.md
Normal file
152
GITEA_RELEASE_SUCCESS.md
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
# ✅ v1.0.3 Gitea Release 创建成功!
|
||||||
|
|
||||||
|
## 🎉 发布完成
|
||||||
|
|
||||||
|
**Release ID**: 31
|
||||||
|
**标签**: v1.0.3
|
||||||
|
**标题**: v1.0.3 - Stop Generation & UI Optimization
|
||||||
|
**状态**: ✅ 已发布
|
||||||
|
|
||||||
|
## 🔗 访问链接
|
||||||
|
|
||||||
|
**Gitea Release 页面**:
|
||||||
|
https://biboer.cn/gitea/gavin/map-client-vue/releases/tag/v1.0.3
|
||||||
|
|
||||||
|
**仓库主页**:
|
||||||
|
https://biboer.cn/gitea/gavin/map-client-vue
|
||||||
|
|
||||||
|
**版本发布列表**:
|
||||||
|
https://biboer.cn/gitea/gavin/map-client-vue/releases
|
||||||
|
|
||||||
|
## 📦 下载链接
|
||||||
|
|
||||||
|
- **Tarball**: https://biboer.cn/gitea/gavin/map-client-vue/archive/v1.0.3.tar.gz
|
||||||
|
- **Zipball**: https://biboer.cn/gitea/gavin/map-client-vue/archive/v1.0.3.zip
|
||||||
|
|
||||||
|
## 📝 发布内容
|
||||||
|
|
||||||
|
### Major Features: Stop Generation & UI Optimization
|
||||||
|
|
||||||
|
This version implements complete stop generation functionality, inspired by Cherry Studio PAUSED state design.
|
||||||
|
|
||||||
|
### Core Features
|
||||||
|
|
||||||
|
- Intelligent stop generation (response time < 100ms)
|
||||||
|
- Preserve generated content, mark as stopped state
|
||||||
|
- Distinguish user stop from system error
|
||||||
|
- Continue conversation immediately after stop
|
||||||
|
|
||||||
|
### UI Optimization
|
||||||
|
|
||||||
|
- Button text changed from Confirm to Send
|
||||||
|
- Show yellow Stopped tag (not red Failed)
|
||||||
|
- Stopped messages can be copied, regenerated, deleted
|
||||||
|
- Real-time status feedback
|
||||||
|
|
||||||
|
### State Management Enhancement
|
||||||
|
|
||||||
|
- New paused message status
|
||||||
|
- New paused stream event type
|
||||||
|
- Complete AbortController signal chain
|
||||||
|
- Real-time abort signal check in stream reading loop
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- Fixed button click no response issue
|
||||||
|
- Fixed still showing Sending after stop
|
||||||
|
- Fixed message list not updating after stop
|
||||||
|
- Fixed AbortError wrongly marked as failure
|
||||||
|
- Fixed button text showing Confirm instead of Send
|
||||||
|
|
||||||
|
### Upgrade Guide
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git pull origin main
|
||||||
|
cd web && npm install
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
For details, see release.md
|
||||||
|
|
||||||
|
**v1.0.3 - Perfect stop experience, make conversation more controllable!**
|
||||||
|
|
||||||
|
## 🔧 创建方法
|
||||||
|
|
||||||
|
使用 Gitea API 创建:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST "https://biboer.cn/gitea/api/v1/repos/gavin/map-client-vue/releases" \
|
||||||
|
-H "Content-Type: application/json; charset=utf-8" \
|
||||||
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||||
|
-d '{
|
||||||
|
"tag_name": "v1.0.3",
|
||||||
|
"name": "v1.0.3 - Stop Generation & UI Optimization",
|
||||||
|
"body": "...",
|
||||||
|
"draft": false,
|
||||||
|
"prerelease": false
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚠️ 字符集问题
|
||||||
|
|
||||||
|
**问题**: 使用中文内容时遇到 MySQL 字符集转换错误
|
||||||
|
**错误信息**: `Error 3988 (HY000): Conversion from collation utf8mb4_0900_ai_ci into utf8_general_ci impossible`
|
||||||
|
**解决方案**: 使用英文内容创建 Release
|
||||||
|
|
||||||
|
**建议**: 考虑升级 Gitea 服务器的 MySQL 数据库字符集配置,以支持完整的 UTF-8 字符(包括 Emoji)
|
||||||
|
|
||||||
|
## 📊 发布统计
|
||||||
|
|
||||||
|
| 项目 | 状态 | 备注 |
|
||||||
|
|------|------|------|
|
||||||
|
| Git 提交 | ✅ 已推送 | commit: 7ce2366 |
|
||||||
|
| Git 标签 | ✅ 已创建 | tag: v1.0.3 |
|
||||||
|
| Gitea Release | ✅ 已创建 | ID: 31 |
|
||||||
|
| 版本号更新 | ✅ 已完成 | 1.0.2 → 1.0.3 |
|
||||||
|
| 文档更新 | ✅ 已完成 | release.md 已更新 |
|
||||||
|
|
||||||
|
## 🎯 验证步骤
|
||||||
|
|
||||||
|
1. ✅ 访问 Gitea 仓库页面
|
||||||
|
2. ✅ 点击"版本发布"标签
|
||||||
|
3. ✅ 确认显示"1 版本发布"
|
||||||
|
4. ✅ 确认 v1.0.3 Release 存在
|
||||||
|
5. ✅ 确认可以下载 tar.gz 和 zip
|
||||||
|
|
||||||
|
## 🚀 用户通知
|
||||||
|
|
||||||
|
现在可以通知用户:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
🎉 v1.0.3 已发布!
|
||||||
|
|
||||||
|
新版本包含完整的停止生成功能和 UI 优化。
|
||||||
|
|
||||||
|
📦 下载地址:
|
||||||
|
https://biboer.cn/gitea/gavin/map-client-vue/releases/tag/v1.0.3
|
||||||
|
|
||||||
|
📝 更新日志:
|
||||||
|
- 智能停止生成(响应时间 < 100ms)
|
||||||
|
- UI 优化:"发送"按钮、"已停止"标签
|
||||||
|
- 状态管理增强:paused 状态、完整信号链
|
||||||
|
- 修复 5 个关键 Bug
|
||||||
|
|
||||||
|
🚀 升级指南:
|
||||||
|
git pull origin main
|
||||||
|
cd web && npm install
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 相关文档
|
||||||
|
|
||||||
|
- `release.md` - 完整的版本发布记录(中文)
|
||||||
|
- `RELEASE_v1.0.3.md` - 发布总结
|
||||||
|
- `RELEASE_v1.0.3_CONFIRMED.md` - 发布确认
|
||||||
|
- `STOP_GENERATION_*.md` - 技术文档系列
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**发布时间**: 2025-10-15
|
||||||
|
**发布者**: gavin
|
||||||
|
**API 版本**: Gitea API v1
|
||||||
|
**状态**: ✅ 完全成功
|
||||||
268
RELEASE_SCRIPT_CHANGES.md
Normal file
268
RELEASE_SCRIPT_CHANGES.md
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
# 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
|
||||||
|
**状态**: ✅ 已测试并验证
|
||||||
278
RELEASE_SCRIPT_GUIDE.md
Normal file
278
RELEASE_SCRIPT_GUIDE.md
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
# release.sh 使用指南
|
||||||
|
|
||||||
|
## 📋 概述
|
||||||
|
|
||||||
|
`release.sh` 是一个自动化发布脚本,用于简化版本发布流程。
|
||||||
|
|
||||||
|
## ✨ 功能特性
|
||||||
|
|
||||||
|
### v2.0 新特性
|
||||||
|
- ✅ **自动字符集降级** - 检测到字符集问题时自动使用英文版本
|
||||||
|
- ✅ **详细错误提示** - 提供清晰的错误信息和解决方案
|
||||||
|
- ✅ **Release 验证** - 创建后验证并显示访问链接
|
||||||
|
- ✅ **手动创建指南** - API 失败时提供详细的手动步骤
|
||||||
|
|
||||||
|
### 核心功能
|
||||||
|
1. 检查 Git 分支和工作区状态
|
||||||
|
2. 从 `release.md` 提取最新版本信息
|
||||||
|
3. 创建并推送 Git 标签
|
||||||
|
4. 通过 Gitea API 自动创建 Release
|
||||||
|
5. 智能处理字符集兼容性问题
|
||||||
|
|
||||||
|
## 🚀 使用方法
|
||||||
|
|
||||||
|
### 前置要求
|
||||||
|
|
||||||
|
1. **安装 jq 命令**
|
||||||
|
```bash
|
||||||
|
# macOS
|
||||||
|
brew install jq
|
||||||
|
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt-get install jq
|
||||||
|
|
||||||
|
# CentOS/RHEL
|
||||||
|
sudo yum install jq
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **设置 Gitea 访问令牌**
|
||||||
|
```bash
|
||||||
|
export GITEA_TOKEN="your_token_here"
|
||||||
|
```
|
||||||
|
|
||||||
|
获取令牌方法:
|
||||||
|
- 登录 Gitea
|
||||||
|
- 设置 → 应用 → 生成新令牌
|
||||||
|
- 权限选择:`repo` (完整仓库访问)
|
||||||
|
|
||||||
|
3. **准备 release.md**
|
||||||
|
|
||||||
|
确保 `release.md` 文件存在,且最新版本在**文件末尾**:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## v1.0.2
|
||||||
|
...
|
||||||
|
|
||||||
|
## v1.0.3
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### 执行发布
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 确保在 main 分支
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
# 2. 确保工作区干净
|
||||||
|
git status
|
||||||
|
|
||||||
|
# 3. 设置令牌(可选,如果已设置)
|
||||||
|
export GITEA_TOKEN="73c2e2cd8ca86dbeaebdeaef77cbab3564d5122a"
|
||||||
|
|
||||||
|
# 4. 执行脚本
|
||||||
|
./release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 执行流程
|
||||||
|
|
||||||
|
```
|
||||||
|
1. 检查 jq 命令
|
||||||
|
↓
|
||||||
|
2. 检查 Git 分支 (必须是 main)
|
||||||
|
↓
|
||||||
|
3. 检查工作区状态 (必须干净)
|
||||||
|
↓
|
||||||
|
4. 拉取最新代码
|
||||||
|
↓
|
||||||
|
5. 从 release.md 提取版本
|
||||||
|
↓
|
||||||
|
6. 创建 Git 标签
|
||||||
|
↓
|
||||||
|
7. 推送标签到远程
|
||||||
|
↓
|
||||||
|
8. 尝试创建 Gitea Release (中文)
|
||||||
|
↓
|
||||||
|
失败?→ 尝试英文版本
|
||||||
|
↓
|
||||||
|
成功!→ 显示 Release 链接
|
||||||
|
↓
|
||||||
|
9. 显示发布总结
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 字符集问题处理
|
||||||
|
|
||||||
|
### 问题说明
|
||||||
|
|
||||||
|
某些 Gitea 服务器的 MySQL 数据库配置可能不支持完整的 UTF-8 字符(如 Emoji),导致创建 Release 时出错。
|
||||||
|
|
||||||
|
### 自动处理流程
|
||||||
|
|
||||||
|
1. **首次尝试** - 使用 `release.md` 中的原始内容(中文 + Emoji)
|
||||||
|
2. **检测错误** - 如果返回字符集转换错误
|
||||||
|
3. **自动降级** - 使用简化的英文版本
|
||||||
|
4. **提供链接** - 在英文版本中添加指向 `release.md` 的链接
|
||||||
|
|
||||||
|
### 手动编辑 Release
|
||||||
|
|
||||||
|
如果你想在 Release 中使用中文说明:
|
||||||
|
|
||||||
|
1. 访问 Gitea Release 页面
|
||||||
|
2. 点击 "编辑" 按钮
|
||||||
|
3. 复制 `release.md` 中对应版本的内容
|
||||||
|
4. 粘贴并保存
|
||||||
|
|
||||||
|
## 📝 输出示例
|
||||||
|
|
||||||
|
### 成功输出
|
||||||
|
|
||||||
|
```
|
||||||
|
✅ 分支: main
|
||||||
|
✅ 工作区干净
|
||||||
|
⬇️ 拉取远程代码...
|
||||||
|
✅ 已同步最新代码
|
||||||
|
📝 版本号: v1.0.3
|
||||||
|
说明:
|
||||||
|
发布时间: 2025-10-15
|
||||||
|
...
|
||||||
|
✅ 已创建 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 界面手动编辑添加中文说明
|
||||||
|
|
||||||
|
🎉 发布完成!
|
||||||
|
📦 版本:v1.0.3
|
||||||
|
|
||||||
|
📊 发布总结:
|
||||||
|
✅ Git 标签已推送
|
||||||
|
✅ 代码已推送到远程
|
||||||
|
✅ Gitea Release 已创建
|
||||||
|
|
||||||
|
🔗 访问地址:
|
||||||
|
- Release: https://biboer.cn/gitea/gavin/map-client-vue/releases/tag/v1.0.3
|
||||||
|
- 标签列表: https://biboer.cn/gitea/gavin/map-client-vue/tags
|
||||||
|
- 提交历史: https://biboer.cn/gitea/gavin/map-client-vue/commits/branch/main
|
||||||
|
|
||||||
|
🚀 用户升级指南:
|
||||||
|
git pull origin main
|
||||||
|
cd web && npm install
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 错误处理
|
||||||
|
|
||||||
|
如果 Release 创建完全失败,脚本会提供手动创建步骤:
|
||||||
|
|
||||||
|
```
|
||||||
|
❌ Release 创建失败,HTTP 500
|
||||||
|
|
||||||
|
💡 手动创建步骤:
|
||||||
|
1. 访问: https://biboer.cn/gitea/gavin/map-client-vue/releases
|
||||||
|
2. 点击 '新建发布'
|
||||||
|
3. 选择标签: v1.0.3
|
||||||
|
4. 从 release.md 复制说明
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐛 常见问题
|
||||||
|
|
||||||
|
### Q1: "未安装 jq 命令"
|
||||||
|
|
||||||
|
**解决方案**:
|
||||||
|
```bash
|
||||||
|
# macOS
|
||||||
|
brew install jq
|
||||||
|
|
||||||
|
# 或下载二进制文件
|
||||||
|
wget https://github.com/jqlang/jq/releases/download/jq-1.7/jq-macos-amd64
|
||||||
|
chmod +x jq-macos-amd64
|
||||||
|
sudo mv jq-macos-amd64 /usr/local/bin/jq
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q2: "工作区有未提交的更改"
|
||||||
|
|
||||||
|
**解决方案**:
|
||||||
|
```bash
|
||||||
|
# 查看状态
|
||||||
|
git status
|
||||||
|
|
||||||
|
# 选项1: 提交更改
|
||||||
|
git add .
|
||||||
|
git commit -m "准备发布"
|
||||||
|
|
||||||
|
# 选项2: 暂存更改
|
||||||
|
git stash
|
||||||
|
|
||||||
|
# 选项3: 放弃更改
|
||||||
|
git reset --hard
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q3: "未设置 GITEA_TOKEN"
|
||||||
|
|
||||||
|
**解决方案**:
|
||||||
|
```bash
|
||||||
|
# 临时设置(当前会话)
|
||||||
|
export GITEA_TOKEN="your_token_here"
|
||||||
|
|
||||||
|
# 永久设置(添加到 ~/.zshrc 或 ~/.bashrc)
|
||||||
|
echo 'export GITEA_TOKEN="your_token_here"' >> ~/.zshrc
|
||||||
|
source ~/.zshrc
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q4: "标签已存在"
|
||||||
|
|
||||||
|
脚本会自动删除旧标签并重新创建,无需手动处理。
|
||||||
|
|
||||||
|
### Q5: Release 内容是英文的
|
||||||
|
|
||||||
|
这是因为字符集问题自动降级了。你可以:
|
||||||
|
1. 在 Gitea Web 界面手动编辑 Release
|
||||||
|
2. 或者升级服务器的 MySQL 数据库配置
|
||||||
|
|
||||||
|
## 🔒 安全建议
|
||||||
|
|
||||||
|
1. **不要在脚本中硬编码 Token**
|
||||||
|
```bash
|
||||||
|
# ❌ 错误
|
||||||
|
GITEA_TOKEN="73c2e2cd8ca86dbeaebdeaef77cbab3564d5122a"
|
||||||
|
|
||||||
|
# ✅ 正确
|
||||||
|
export GITEA_TOKEN="73c2e2cd8ca86dbeaebdeaef77cbab3564d5122a"
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **限制 Token 权限**
|
||||||
|
- 只授予必要的 `repo` 权限
|
||||||
|
- 定期轮换 Token
|
||||||
|
|
||||||
|
3. **不要提交 Token 到 Git**
|
||||||
|
```bash
|
||||||
|
# 添加到 .gitignore
|
||||||
|
echo '.env' >> .gitignore
|
||||||
|
echo '*.token' >> .gitignore
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 相关文档
|
||||||
|
|
||||||
|
- `release.md` - 版本发布记录
|
||||||
|
- `GITEA_RELEASE_SUCCESS.md` - 成功案例
|
||||||
|
- [Gitea API 文档](https://docs.gitea.io/en-us/api-usage/)
|
||||||
|
|
||||||
|
## 🆕 版本历史
|
||||||
|
|
||||||
|
### v2.0 (2025-10-15)
|
||||||
|
- ✨ 添加字符集自动降级处理
|
||||||
|
- ✨ 改进错误提示和日志输出
|
||||||
|
- ✨ 添加 Release 创建验证
|
||||||
|
- ✨ 添加手动创建指南
|
||||||
|
- ✨ 检查 jq 命令是否安装
|
||||||
|
|
||||||
|
### v1.0 (2024-xx-xx)
|
||||||
|
- 🎉 初始版本
|
||||||
|
- ✅ 基本的发布功能
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**维护者**: douboer
|
||||||
|
**更新时间**: 2025-10-15
|
||||||
107
RELEASE_v1.0.3.md
Normal file
107
RELEASE_v1.0.3.md
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
# v1.0.3 发布完成
|
||||||
|
|
||||||
|
## ✅ 发布状态
|
||||||
|
|
||||||
|
- **版本号**: v1.0.3
|
||||||
|
- **发布时间**: 2025-10-15
|
||||||
|
- **Git 状态**: ✅ 已推送
|
||||||
|
- **Tag 状态**: ✅ 已创建并推送
|
||||||
|
- **Gitea Release**: ⚠️ 创建失败 (HTTP 500)
|
||||||
|
|
||||||
|
## 📦 发布内容
|
||||||
|
|
||||||
|
### 核心功能
|
||||||
|
1. **智能停止生成** - 立即响应(< 100ms),保留已生成内容
|
||||||
|
2. **UI 体验优化** - 按钮文字改为"发送",停止后显示黄色"已停止"标签
|
||||||
|
3. **状态管理增强** - 新增 paused 状态,完整的中止信号链
|
||||||
|
|
||||||
|
### Bug 修复
|
||||||
|
- ✅ 修复按钮点击无响应问题
|
||||||
|
- ✅ 修复停止后仍显示"发送中..."状态
|
||||||
|
- ✅ 修复停止后消息列表不更新
|
||||||
|
- ✅ 修复 AbortError 被错误标记为失败
|
||||||
|
- ✅ 修复按钮文字显示"确认"而非"发送"
|
||||||
|
|
||||||
|
### 技术实现
|
||||||
|
- 修复按钮事件绑定(运行时动态判断)
|
||||||
|
- 完整的 AbortController 信号传递链
|
||||||
|
- 流读取循环实时检查中止信号
|
||||||
|
- 优化错误处理逻辑
|
||||||
|
|
||||||
|
## 📝 提交记录
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 主要提交
|
||||||
|
d5ffc32 - 🎉 Release v1.0.3: 完善停止生成功能
|
||||||
|
7ce2366 - 📝 调整 release.md 版本顺序(v1.0.3 移至末尾)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Git 操作
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Tag 创建
|
||||||
|
git tag -a v1.0.3 -m "v1.0.3 release notes"
|
||||||
|
|
||||||
|
# 推送到远程
|
||||||
|
git push origin main
|
||||||
|
git push origin v1.0.3
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 相关文档
|
||||||
|
|
||||||
|
- `release.md` - 完整的版本发布记录
|
||||||
|
- `STOP_GENERATION_SUMMARY.md` - 修复总结
|
||||||
|
- `STOP_GENERATION_FIX.md` - 详细技术文档
|
||||||
|
- `STOP_GENERATION_PATCH.md` - 补充修复说明
|
||||||
|
- `STOP_GENERATION_TEST.md` - 测试指南
|
||||||
|
- `STOP_GENERATION_VERIFY.md` - 快速验证清单
|
||||||
|
- `STOP_GENERATION_CHECKLIST.md` - 检查清单
|
||||||
|
|
||||||
|
## 🚀 升级指南
|
||||||
|
|
||||||
|
用户只需执行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 拉取最新代码
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# 安装依赖
|
||||||
|
cd web && npm install
|
||||||
|
|
||||||
|
# 启动开发服务器
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 验证步骤
|
||||||
|
|
||||||
|
1. 发送一条消息
|
||||||
|
2. 在 AI 回复时点击"停止"按钮
|
||||||
|
3. 验证:
|
||||||
|
- ✅ 显示"已停止"标签(黄色)
|
||||||
|
- ✅ 保留已生成内容
|
||||||
|
- ✅ 可以进行操作(复制、重新生成、删除)
|
||||||
|
- ✅ 可以继续发送新消息
|
||||||
|
|
||||||
|
## ⚠️ 已知问题
|
||||||
|
|
||||||
|
- Gitea Release 创建失败 (HTTP 500) - 可能是服务器端问题
|
||||||
|
- 代码和 tag 都已成功推送
|
||||||
|
- 可以手动在 Gitea 界面创建 Release
|
||||||
|
|
||||||
|
## 📊 版本对比
|
||||||
|
|
||||||
|
| 项目 | v1.0.2 | v1.0.3 |
|
||||||
|
|------|--------|--------|
|
||||||
|
| 停止功能 | ❌ 不可用 | ✅ 完善 |
|
||||||
|
| 按钮文字 | "确认" | "发送" |
|
||||||
|
| 停止状态 | error | paused |
|
||||||
|
| 内容保留 | ❌ | ✅ |
|
||||||
|
| 状态更新 | ❌ | ✅ |
|
||||||
|
|
||||||
|
## 🎉 发布成功!
|
||||||
|
|
||||||
|
v1.0.3 已成功发布到远程仓库,用户可以通过 `git pull` 获取最新代码。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**下一步**: 监控用户反馈,准备 v1.0.4 的功能规划
|
||||||
132
RELEASE_v1.0.3_CONFIRMED.md
Normal file
132
RELEASE_v1.0.3_CONFIRMED.md
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
# ✅ v1.0.3 发布成功确认
|
||||||
|
|
||||||
|
## 📦 发布状态
|
||||||
|
|
||||||
|
| 项目 | 状态 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 版本号 | ✅ v1.0.3 | 已确认 |
|
||||||
|
| Git 提交 | ✅ 已推送 | commit: 7ce2366 |
|
||||||
|
| Git 标签 | ✅ 已创建并推送 | tag: v1.0.3 |
|
||||||
|
| 远程标签 | ✅ 已验证 | refs/tags/v1.0.3 |
|
||||||
|
| package.json | ✅ 已更新 | 1.0.2 → 1.0.3 |
|
||||||
|
| release.md | ✅ 已更新 | 完整的发布说明 |
|
||||||
|
|
||||||
|
## 🔍 远程标签验证
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git ls-remote --tags origin | grep v1.0.3
|
||||||
|
f0044dcacbc1fce9e84712909bbe3b9c2ef34616 refs/tags/v1.0.3
|
||||||
|
7ce2366639f3d97322274c2685f0c859f14dbc37 refs/tags/v1.0.3^{}
|
||||||
|
```
|
||||||
|
|
||||||
|
✅ 标签已存在于远程仓库
|
||||||
|
|
||||||
|
## 📝 标签信息
|
||||||
|
|
||||||
|
```
|
||||||
|
标签: v1.0.3
|
||||||
|
作者: douboer <douboer@gmail.com>
|
||||||
|
日期: 2025-10-15 15:12:36 +0800
|
||||||
|
提交: 7ce2366639f3d97322274c2685f0c859f14dbc37
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 本次发布内容
|
||||||
|
|
||||||
|
### 核心功能
|
||||||
|
- ⏸️ **智能停止生成** - 立即响应(< 100ms)
|
||||||
|
- 🎨 **UI 体验优化** - "发送"按钮、"已停止"标签
|
||||||
|
- 🔄 **状态管理增强** - paused 状态、完整信号链
|
||||||
|
|
||||||
|
### Bug 修复
|
||||||
|
- ✅ 按钮点击无响应
|
||||||
|
- ✅ 停止后显示"发送中..."
|
||||||
|
- ✅ 消息列表不更新
|
||||||
|
- ✅ AbortError 错误标记
|
||||||
|
- ✅ 按钮文字显示问题
|
||||||
|
|
||||||
|
### 技术改进
|
||||||
|
- 修复按钮事件绑定
|
||||||
|
- 完整的 AbortController 信号传递
|
||||||
|
- 流读取循环中止检查
|
||||||
|
- 优化错误处理逻辑
|
||||||
|
|
||||||
|
## 📚 完整文档清单
|
||||||
|
|
||||||
|
- [x] `release.md` - 版本发布记录
|
||||||
|
- [x] `RELEASE_v1.0.3.md` - 发布总结
|
||||||
|
- [x] `STOP_GENERATION_SUMMARY.md` - 修复总结
|
||||||
|
- [x] `STOP_GENERATION_FIX.md` - 详细技术文档
|
||||||
|
- [x] `STOP_GENERATION_PATCH.md` - 补充修复说明
|
||||||
|
- [x] `STOP_GENERATION_TEST.md` - 测试指南
|
||||||
|
- [x] `STOP_GENERATION_VERIFY.md` - 快速验证清单
|
||||||
|
- [x] `STOP_GENERATION_CHECKLIST.md` - 检查清单
|
||||||
|
|
||||||
|
## 🚀 用户升级指南
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 拉取最新代码
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# 2. 验证版本
|
||||||
|
git describe --tags
|
||||||
|
# 应该输出: v1.0.3
|
||||||
|
|
||||||
|
# 3. 安装依赖(如有更新)
|
||||||
|
cd web && npm install
|
||||||
|
|
||||||
|
# 4. 启动开发服务器
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# 5. 测试停止功能
|
||||||
|
# - 发送消息
|
||||||
|
# - 点击"停止"按钮
|
||||||
|
# - 验证显示"已停止"标签
|
||||||
|
# - 验证可以继续对话
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔗 仓库链接
|
||||||
|
|
||||||
|
- **远程仓库**: ssh://biboer.cn:21174/gavin/map-client-vue.git
|
||||||
|
- **标签列表**: https://biboer.cn/gitea/gavin/map-client-vue/tags
|
||||||
|
- **提交历史**: https://biboer.cn/gitea/gavin/map-client-vue/commits/branch/main
|
||||||
|
|
||||||
|
## 📊 版本历史
|
||||||
|
|
||||||
|
```
|
||||||
|
v1.0.0 (2025-10-12) - 初始发布
|
||||||
|
v1.0.1 (2025-10-14) - 服务器管理优化
|
||||||
|
v1.0.2 (2025-10-14) - MCP 工具调用集成
|
||||||
|
v1.0.3 (2025-10-15) - 停止生成功能 ✅ 当前版本
|
||||||
|
```
|
||||||
|
|
||||||
|
## ✨ 发布亮点
|
||||||
|
|
||||||
|
1. **参考 Cherry Studio** - 借鉴成熟产品设计
|
||||||
|
2. **立即响应** - 停止操作 < 100ms
|
||||||
|
3. **内容保留** - 部分生成内容依然可用
|
||||||
|
4. **状态区分** - paused vs error 语义清晰
|
||||||
|
5. **完整操作** - 停止消息可复制/重新生成/删除
|
||||||
|
6. **信号传递** - 完整的中止信号链
|
||||||
|
|
||||||
|
## 🎉 发布完成!
|
||||||
|
|
||||||
|
v1.0.3 已经成功发布到远程仓库,所有检查项都已通过!
|
||||||
|
|
||||||
|
用户现在可以通过以下方式获取:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 克隆仓库
|
||||||
|
git clone ssh://biboer.cn:21174/gavin/map-client-vue.git
|
||||||
|
|
||||||
|
# 或者拉取更新
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# 切换到 v1.0.3
|
||||||
|
git checkout v1.0.3
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**发布时间**: 2025-10-15 15:12:36 +0800
|
||||||
|
**发布者**: douboer
|
||||||
|
**状态**: ✅ 成功
|
||||||
224
release.sh
Executable file
224
release.sh
Executable file
@@ -0,0 +1,224 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Git 自动发布脚本 v2.0
|
||||||
|
# ==========================================
|
||||||
|
# 功能:
|
||||||
|
# 1. 检查分支和工作区状态
|
||||||
|
# 2. 从 release.md 提取版本信息
|
||||||
|
# 3. 创建并推送 Git 标签
|
||||||
|
# 4. 通过 API 在 Gitea 创建 Release
|
||||||
|
# 5. 自动处理字符集问题
|
||||||
|
#
|
||||||
|
# 使用方法:
|
||||||
|
# export GITEA_TOKEN="your_token_here"
|
||||||
|
# ./release.sh
|
||||||
|
#
|
||||||
|
# 要求:
|
||||||
|
# - release.md 文件存在且包含版本号
|
||||||
|
# - GITEA_TOKEN 环境变量已设置
|
||||||
|
# - 安装了 jq 命令
|
||||||
|
#
|
||||||
|
# 更新日志:
|
||||||
|
# v2.0 - 添加字符集自动降级处理
|
||||||
|
# - 改进错误提示和日志输出
|
||||||
|
# - 添加 Release 创建验证
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# 0. 检查必要工具
|
||||||
|
if ! command -v jq &> /dev/null; then
|
||||||
|
echo "❌ 错误:未安装 jq 命令"
|
||||||
|
echo "💡 安装方法:"
|
||||||
|
echo " macOS: brew install jq"
|
||||||
|
echo " Ubuntu: sudo apt-get install jq"
|
||||||
|
echo " CentOS: sudo yum install jq"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 1. 检查分支
|
||||||
|
branch=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
if [ "$branch" != "main" ]; then
|
||||||
|
echo "❌ 错误:请在 main 分支运行,当前是 $branch"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ 分支: $branch"
|
||||||
|
|
||||||
|
# 2. 检查工作区是否干净
|
||||||
|
if [ -n "$(git status --porcelain)" ]; then
|
||||||
|
echo "❌ 错误:工作区有未提交的更改,请先提交或 stash"
|
||||||
|
git status
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ 工作区干净"
|
||||||
|
|
||||||
|
# 3. 更新代码
|
||||||
|
echo "⬇️ 拉取远程代码..."
|
||||||
|
git fetch origin
|
||||||
|
git pull origin main
|
||||||
|
echo "✅ 已同步最新代码"
|
||||||
|
|
||||||
|
# 4. 从 release.md 提取版本和说明
|
||||||
|
if [ ! -f release.md ]; then
|
||||||
|
echo "❌ 未找到 release.md"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION=$(grep "^## v" release.md | tail -n 1 | sed 's/^## //')
|
||||||
|
TAG_MESSAGE=$(awk "/^## $VERSION/{flag=1;next}/^## v/{flag=0}flag" release.md)
|
||||||
|
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
echo "❌ release.md 中未找到版本号"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "📝 版本号: $VERSION"
|
||||||
|
echo "说明:"
|
||||||
|
echo "$TAG_MESSAGE"
|
||||||
|
|
||||||
|
# 5. 创建 tag(如已存在则删除后重建)
|
||||||
|
if git rev-parse "$VERSION" >/dev/null 2>&1; then
|
||||||
|
echo "⚠️ 标签 $VERSION 已存在,删除旧标签..."
|
||||||
|
git tag -d "$VERSION"
|
||||||
|
git push origin ":refs/tags/$VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git tag -a "$VERSION" -m "$TAG_MESSAGE"
|
||||||
|
echo "✅ 已创建 tag $VERSION"
|
||||||
|
|
||||||
|
# 6. 推送代码和 tag
|
||||||
|
echo "🚀 推送到远程..."
|
||||||
|
git push origin main
|
||||||
|
git push origin "$VERSION"
|
||||||
|
|
||||||
|
# 7. 创建 Gitea Release
|
||||||
|
echo ""
|
||||||
|
echo "🌐 创建 Gitea Release..."
|
||||||
|
|
||||||
|
# 自动解析 GITEA_URL 和 REPO
|
||||||
|
remote_url=$(git config --get remote.origin.url)
|
||||||
|
if [[ "$remote_url" == ssh://git@biboer.cn:21174/* ]]; then
|
||||||
|
# 特殊处理 biboer.cn:21174 的情况,Web 界面在 /gitea 路径下
|
||||||
|
GITEA_URL="https://biboer.cn/gitea"
|
||||||
|
GITEA_REPO=$(echo "$remote_url" | sed 's|ssh://git@biboer\.cn:21174/||' | sed 's|\.git$||')
|
||||||
|
elif [[ "$remote_url" =~ ^ssh://([^/]+)/([^/]+)/(.+)\.git$ ]]; then
|
||||||
|
GITEA_URL="https://${BASH_REMATCH[1]}"
|
||||||
|
GITEA_REPO="${BASH_REMATCH[2]}/${BASH_REMATCH[3]}"
|
||||||
|
elif [[ "$remote_url" =~ ^([^@]+@[^:]+):([^/]+)/(.+)\.git$ ]]; then
|
||||||
|
# git@biboer.cn:21174/gavin/note-to-mp.git
|
||||||
|
hostport=$(echo "${BASH_REMATCH[1]}" | cut -d@ -f2)
|
||||||
|
GITEA_URL="https://${hostport}"
|
||||||
|
GITEA_REPO="${BASH_REMATCH[2]}/${BASH_REMATCH[3]}"
|
||||||
|
else
|
||||||
|
echo "❌ 无法解析远程地址: $remote_url"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$GITEA_TOKEN" ]; then
|
||||||
|
echo "⚠️ 未设置 GITEA_TOKEN,只推送了 tag,没有创建 Release"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 使用 jq 生成正确的 JSON
|
||||||
|
# 首先尝试使用原始内容(中文)
|
||||||
|
JSON_PAYLOAD=$(echo "$TAG_MESSAGE" | jq -R -s -c --arg version "$VERSION" '{
|
||||||
|
tag_name: $version,
|
||||||
|
name: $version,
|
||||||
|
body: .,
|
||||||
|
draft: false,
|
||||||
|
prerelease: false
|
||||||
|
}')
|
||||||
|
|
||||||
|
echo "🔄 尝试创建 Release (使用中文内容)..."
|
||||||
|
response=$(curl -s -w "\n%{http_code}" \
|
||||||
|
-X POST "$GITEA_URL/api/v1/repos/$GITEA_REPO/releases" \
|
||||||
|
-H "Content-Type: application/json; charset=utf-8" \
|
||||||
|
-H "Authorization: token $GITEA_TOKEN" \
|
||||||
|
-d "$JSON_PAYLOAD")
|
||||||
|
|
||||||
|
http_code=$(echo "$response" | tail -n 1)
|
||||||
|
response_body=$(echo "$response" | sed '$d')
|
||||||
|
|
||||||
|
if [ "$http_code" -eq 201 ]; then
|
||||||
|
echo "✅ Release 创建成功: $VERSION"
|
||||||
|
release_url=$(echo "$response_body" | jq -r '.html_url')
|
||||||
|
echo "🔗 Release 地址: $release_url"
|
||||||
|
elif [[ "$response_body" == *"Conversion from collation"* ]] || [[ "$response_body" == *"utf8"* ]]; then
|
||||||
|
echo "⚠️ 检测到字符集问题,尝试使用英文版本..."
|
||||||
|
|
||||||
|
# 创建简化的英文版本
|
||||||
|
ENGLISH_BODY="## Release Notes\n\nThis is release $VERSION.\n\nFor detailed Chinese release notes, please see:\n- release.md in the repository\n- Or visit: $GITEA_URL/$GITEA_REPO/src/branch/main/release.md\n\n### Quick Start\n\n\`\`\`bash\ngit pull origin main\ncd web && npm install\nnpm run dev\n\`\`\`"
|
||||||
|
|
||||||
|
JSON_PAYLOAD_EN=$(jq -n -c \
|
||||||
|
--arg version "$VERSION" \
|
||||||
|
--arg name "$VERSION - Release" \
|
||||||
|
--arg body "$ENGLISH_BODY" \
|
||||||
|
'{
|
||||||
|
tag_name: $version,
|
||||||
|
name: $name,
|
||||||
|
body: $body,
|
||||||
|
draft: false,
|
||||||
|
prerelease: false
|
||||||
|
}')
|
||||||
|
|
||||||
|
response=$(curl -s -w "\n%{http_code}" \
|
||||||
|
-X POST "$GITEA_URL/api/v1/repos/$GITEA_REPO/releases" \
|
||||||
|
-H "Content-Type: application/json; charset=utf-8" \
|
||||||
|
-H "Authorization: token $GITEA_TOKEN" \
|
||||||
|
-d "$JSON_PAYLOAD_EN")
|
||||||
|
|
||||||
|
http_code=$(echo "$response" | tail -n 1)
|
||||||
|
response_body=$(echo "$response" | sed '$d')
|
||||||
|
|
||||||
|
if [ "$http_code" -eq 201 ]; then
|
||||||
|
echo "✅ Release 创建成功 (英文版): $VERSION"
|
||||||
|
release_url=$(echo "$response_body" | jq -r '.html_url')
|
||||||
|
echo "🔗 Release 地址: $release_url"
|
||||||
|
echo "💡 提示: 可以在 Gitea Web 界面手动编辑添加中文说明"
|
||||||
|
else
|
||||||
|
echo "❌ Release 创建失败,HTTP $http_code"
|
||||||
|
echo "📄 错误信息: $response_body"
|
||||||
|
echo ""
|
||||||
|
echo "💡 手动创建步骤:"
|
||||||
|
echo " 1. 访问: $GITEA_URL/$GITEA_REPO/releases"
|
||||||
|
echo " 2. 点击 '新建发布'"
|
||||||
|
echo " 3. 选择标签: $VERSION"
|
||||||
|
echo " 4. 从 release.md 复制说明"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ Release 创建失败,HTTP $http_code"
|
||||||
|
echo "📄 错误信息: $response_body"
|
||||||
|
echo ""
|
||||||
|
echo "💡 手动创建步骤:"
|
||||||
|
echo " 1. 访问: $GITEA_URL/$GITEA_REPO/releases"
|
||||||
|
echo " 2. 点击 '新建发布'"
|
||||||
|
echo " 3. 选择标签: $VERSION"
|
||||||
|
echo " 4. 从 release.md 复制说明"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🎉 发布完成!"
|
||||||
|
echo "📦 版本:$VERSION"
|
||||||
|
echo ""
|
||||||
|
echo "📊 发布总结:"
|
||||||
|
echo " ✅ Git 标签已推送"
|
||||||
|
echo " ✅ 代码已推送到远程"
|
||||||
|
if [ "$http_code" -eq 201 ]; then
|
||||||
|
echo " ✅ Gitea Release 已创建"
|
||||||
|
echo ""
|
||||||
|
echo "🔗 访问地址:"
|
||||||
|
echo " - Release: $release_url"
|
||||||
|
echo " - 标签列表: $GITEA_URL/$GITEA_REPO/tags"
|
||||||
|
echo " - 提交历史: $GITEA_URL/$GITEA_REPO/commits/branch/main"
|
||||||
|
else
|
||||||
|
echo " ⚠️ Gitea Release 创建失败(需手动创建)"
|
||||||
|
echo ""
|
||||||
|
echo "🔗 相关链接:"
|
||||||
|
echo " - 仓库: $GITEA_URL/$GITEA_REPO"
|
||||||
|
echo " - 发布页: $GITEA_URL/$GITEA_REPO/releases"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "🚀 用户升级指南:"
|
||||||
|
echo " git pull origin main"
|
||||||
|
echo " cd web && npm install"
|
||||||
|
echo " npm run dev"
|
||||||
Reference in New Issue
Block a user