Skip to content

Commit 2d28f98

Browse files
committed
feat: 发布2.0
1 parent 67a5b2b commit 2d28f98

13 files changed

Lines changed: 517 additions & 76 deletions

File tree

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
# GitHub Actions 自动发布 NuGet 包说明
2+
3+
## 功能说明
4+
5+
当同时满足以下条件时,会自动触发发布:
6+
1. 提交的 commit message 包含 `release version`
7+
2. 提交者邮箱是 `lbhdr@outlook.com`
8+
9+
满足条件后会自动:
10+
1. 生成版本号(格式:`主版本号.年后两位.月日.时分`,例如:`2.25.1225.1430`
11+
2. 更新所有可发布项目的版本号
12+
3. 构建和打包所有项目
13+
4. 发布到 NuGet
14+
5. 创建 GitHub Release
15+
16+
## 版本号格式
17+
18+
- **格式**`主版本号.年后两位.月日.时分`
19+
- **当前主版本号**`2`
20+
- **示例**
21+
- `2.25.1225.1430` = Version 2, Year 2025, Dec 25, 14:30 UTC
22+
- `2.25.0101.0900` = Version 2, Year 2025, Jan 01, 09:00 UTC
23+
24+
## 配置步骤
25+
26+
### 1. 设置 NuGet API Key
27+
28+
1. 访问 [NuGet.org](https://www.nuget.org/)
29+
2. 登录你的账户
30+
3. 点击右上角用户名 → **API Keys**
31+
4. 创建新的 API Key 或使用现有的
32+
5. 复制 API Key
33+
34+
### 2. 在 GitHub 仓库中设置 Secret
35+
36+
1. 打开你的 GitHub 仓库
37+
2. 进入 **Settings****Secrets and variables****Actions**
38+
3. 点击 **New repository secret**
39+
4. 名称:`NUGET_API_KEY`
40+
5. 值:粘贴你的 NuGet API Key
41+
6. 点击 **Add secret**
42+
43+
## 使用方法
44+
45+
### 触发发布
46+
47+
在提交代码时,需要同时满足以下条件才能触发自动发布:
48+
49+
1. **Commit message 包含 `release version`**(不区分大小写)
50+
2. **提交者邮箱是 `lbhdr@outlook.com`**
51+
52+
示例:
53+
54+
```bash
55+
# 确保 Git 配置的邮箱是 lbhdr@outlook.com
56+
git config user.email "lbhdr@outlook.com"
57+
58+
# 提交代码(commit message 包含 release version)
59+
git commit -m "release version: 更新功能说明"
60+
git push origin main
61+
```
62+
63+
或者:
64+
65+
```bash
66+
git commit -m "fix: 修复bug release version"
67+
git push origin main
68+
```
69+
70+
**注意**
71+
- Commit message 中只要包含 `release version`(不区分大小写)即可
72+
- 提交者邮箱必须是 `lbhdr@outlook.com`(区分大小写)
73+
- 如果 commit message 包含 `release version` 但提交者邮箱不是 `lbhdr@outlook.com`,workflow 会跳过发布
74+
75+
### 发布流程
76+
77+
1. **检查 commit message**:workflow 会检查最后一个 commit 的 message
78+
2. **生成版本号**:基于当前 UTC 时间生成版本号
79+
3. **更新项目文件**:自动更新所有可发布项目的 `.csproj` 文件中的版本号
80+
4. **构建和打包**:构建 Release 版本并生成 NuGet 包
81+
5. **发布到 NuGet**:自动推送所有包到 NuGet.org
82+
6. **创建 GitHub Release**:自动创建带标签的 GitHub Release
83+
84+
## 会发布的项目
85+
86+
以下项目会被自动更新版本号并发布:
87+
88+
1. `Cyaim.WebSocketServer` - 主库
89+
2. `Cyaim.WebSocketServer.MessagePack` - MessagePack 扩展
90+
3. `Cyaim.WebSocketServer.Dashboard` - Dashboard 监控
91+
4. `Cyaim.WebSocketServer.Cluster.StackExchangeRedis` - StackExchange.Redis 集群扩展
92+
5. `Cyaim.WebSocketServer.Cluster.RabbitMQ` - RabbitMQ 集群扩展
93+
6. `Cyaim.WebSocketServer.Cluster.FreeRedis` - FreeRedis 集群扩展
94+
7. `Cyaim.WebSocketServer.Cluster.Hybrid` - 混合集群扩展
95+
8. `Cyaim.WebSocketServer.Cluster.Hybrid.Implementations` - 混合集群实现
96+
97+
**注意**`Sample``Tests` 目录下的项目不会被发布。
98+
99+
## 查看发布状态
100+
101+
1. 进入 GitHub 仓库的 **Actions** 标签页
102+
2. 查看 `Release NuGet Packages` workflow 的运行状态
103+
3. 如果成功,可以在:
104+
- **NuGet.org** 查看发布的包
105+
- **GitHub Releases** 查看创建的 Release
106+
107+
## 故障排除
108+
109+
### 发布失败
110+
111+
1. **检查 NuGet API Key**:确保 `NUGET_API_KEY` secret 已正确设置
112+
2. **检查 commit message**:确保包含 `release version`(不区分大小写)
113+
3. **检查提交者邮箱**:确保 Git 配置的邮箱是 `lbhdr@outlook.com`(区分大小写)
114+
```bash
115+
# 查看当前 Git 邮箱
116+
git config user.email
117+
118+
# 设置 Git 邮箱为 lbhdr@outlook.com
119+
git config user.email "lbhdr@outlook.com"
120+
121+
# 全局设置(可选)
122+
git config --global user.email "lbhdr@outlook.com"
123+
```
124+
4. **查看 workflow 日志**:在 Actions 页面查看详细的错误信息和检查结果
125+
126+
### 版本号格式错误
127+
128+
如果版本号格式不符合预期,检查:
129+
- 系统时间是否正确
130+
- workflow 文件中的版本号生成逻辑
131+
132+
### 包已存在错误
133+
134+
如果包已存在,workflow 会使用 `--skip-duplicate` 参数跳过,不会报错。
135+
136+
## 自定义配置
137+
138+
### 修改主版本号
139+
140+
编辑 `.github/workflows/release-nuget.yml`,修改:
141+
142+
```yaml
143+
MAJOR_VERSION=2 # 改为你需要的版本号
144+
```
145+
146+
### 修改触发条件
147+
148+
编辑 `.github/workflows/release-nuget.yml`,修改 commit message 检查逻辑:
149+
150+
```yaml
151+
if echo "$COMMIT_MSG" | grep -qi "release version"; then
152+
# 可以改为其他触发条件
153+
fi
154+
```
155+
156+
### 添加更多项目
157+
158+
`Update version in all project files` 步骤中添加项目路径:
159+
160+
```yaml
161+
PROJECTS=(
162+
"Cyaim.WebSocketServer/YourNewProject/YourNewProject.csproj"
163+
# ... 其他项目
164+
)
165+
```
166+
167+
## 注意事项
168+
169+
⚠️ **重要提示**
170+
171+
1. **版本号唯一性**:确保同一时间只触发一次发布,避免版本号冲突
172+
2. **API Key 安全**:不要将 API Key 提交到代码仓库
173+
3. **测试发布**:首次使用前,建议先在测试分支测试
174+
4. **时间同步**:版本号基于 UTC 时间,确保服务器时间正确
175+

.github/workflows/dotnet-core.yml

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)