Files
ykxmz/docs/双平台发布.md
T

109 lines
3.2 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.
# 双平台发布(Gitee + EzHub)
## 平台
| | 地址 | 类型 |
|---|---|---|
| **Gitee** | `git@gitee.com:xmz7891/ykxmz.git` | Gitee(API v5) |
| **EzHub** | `ssh://git@git.261826.xyz/xmz/ykxmz.git` | **Gitea 1.22.0**(API v1) |
本地 remote 已配好:`origin` = Gitee,`ezhub` = EzHub。
---
## 一次性配置(需要你操作两件事)
### 1. 把 SSH 公钥加到 EzHub
我已经生成了一把**专用于 EzHub** 的密钥(不复用 Gitee 那把,权限隔离):
```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMFMh2Zqwm+8KFhU3DhzhOO5Sx7cIzybYqUsrbt1c3ly ykxmz-ezhub
```
**操作**:EzHub 网页 → 右上角头像 → **设置** → **SSH / GPG 密钥** → **增加密钥**
→ 把上面那一整行粘进去 → 保存。
本机配置(已写好,不用你管):
```
# ~/.ssh/config
Host git.261826.xyz
HostName git.261826.xyz
User git
IdentityFile ~/.ssh/id_ed25519_ezhub
IdentitiesOnly yes
ServerAliveInterval 30
```
### 2. 生成 EzHub 的 API 令牌
SSH 密钥只能推代码,**建发行版必须要令牌**。
**操作**:EzHub 网页 → **设置** → **应用** → **生成令牌**
→ 名称随便(比如 `ykxmz-release`)→ 权限勾 **`write:repository`** → 生成 → 复制。
> 令牌只从命令行传给脚本,不落盘、不进仓库。
---
## 日常发布
```powershell
cd C:\Users\shu\Desktop\deepseekagent\LanRemote
# 先演练(不真的发,只看会做什么)
python _build\release_all.py <gitee令牌> <ezhub令牌> 1.8.0 --dry
# 确认无误再正式发
python _build\release_all.py <gitee令牌> <ezhub令牌> 1.8.0
```
脚本会依次做:
1. **前置检查**
- 三个产物在不在(安装包 exe / 服务端 zip / 手表 apk)
- 从 `CHANGELOG.md` 取这个版本的更新说明
- 工作区干不干净(不干净就拒绝 —— 否则推上去的和测过的不是一份)
- **对外口径检查**:更新说明里出现管理页字眼直接拒绝
2. **推代码**到 `origin` 和 `ezhub`
3. **建发行版**并传三个附件到两个平台
4. 打印两边发行版地址
---
## 两个平台的接口差别(写代码时容易错的地方)
| 项目 | Gitee | Gitea / EzHub |
|---|---|---|
| API 前缀 | `/api/v5/repos/...` | `/api/v1/repos/...` |
| 认证方式 | 参数 `access_token` | 请求头 `Authorization: token <t>` |
| 传附件路径 | `/releases/{id}/attach_files` | `/releases/{id}/assets?name=<文件名>` |
| 附件字段名 | `file` | **`attachment`** |
| 草稿/预发布 | 只有 `prerelease` | `draft` + `prerelease` |
**最容易踩的**:EzHub 的文件名要走**查询参数** `?name=`,
不是 Gitee 那种放 `Content-Disposition` 里。
---
## 单独发某一个平台
```powershell
# 只发 EzHub
python _build\ezhub_release.py <ezhub令牌> 1.8.0
# 只发 Gitee
python _build\gitee_release.py <gitee令牌> 1.8.0
```
---
## 注意事项
- **私钥在 `~/.ssh/`,仓库外,不会进版本库。** 已用 `git ls-files` 确认过。
- 令牌**不要**提交到仓库,也不要写进任何脚本。
- 发行版说明**只放更新内容**(用户要求),脚本自动从 CHANGELOG 取,
不会套额外的标题。
- 重发同一个版本时,脚本会先按标签查已有的发行版并复用,不会报错。