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

3.2 KiB
Raw Blame History

双平台发布(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 → 生成 → 复制。

令牌只从命令行传给脚本,不落盘、不进仓库。


日常发布

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 里。


单独发某一个平台

# 只发 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 取, 不会套额外的标题。
  • 重发同一个版本时,脚本会先按标签查已有的发行版并复用,不会报错。