Преглед изворни кода

补充远程镜像发布流程、标签规则与版本说明

Samien пре 1 месец
родитељ
комит
085813b7fe
5 измењених фајлова са 130 додато и 5 уклоњено
  1. 19 2
      README.md
  2. 4 2
      docker.env.example
  3. 40 0
      docs/docker-install.md
  4. 39 0
      docs/release-process.md
  5. 28 1
      docs/releases/v0.4.9.md

+ 19 - 2
README.md

@@ -44,7 +44,22 @@ Web 数据默认保存在 `~/.yaoyao`,可用 `YAOYAO_HOME` 指定(兼容 `HE
 
 ## Docker 安装
 
-准备 Docker Engine 或 Docker Desktop,以及容器可访问的 Hermes 9119 服务。在仓库目录执行:
+远程镜像发布在 [Docker Hub](https://hub.docker.com/r/samienluo/yaoyao):
+
+| 镜像 | 架构 |
+| --- | --- |
+| `samienluo/yaoyao:v0.4.9-amd` | AMD64 |
+| `samienluo/yaoyao:v0.4.9` | 自动匹配 AMD64 / ARM64 |
+| `samienluo/yaoyao:latest` | 最新稳定版通用镜像,当前与 `v0.4.9` 相同 |
+
+准备好 Docker Engine/Compose 和容器可访问的 Hermes 9119 服务,在仓库目录将 `docker.env.example` 复制为 `docker.env`。配置上游地址,并设置 `HERMES_YAOYAO_IMAGE=samienluo/yaoyao:v0.4.9`(或 `samienluo/yaoyao:latest`),即可使用远程镜像:
+
+```sh
+docker compose --env-file docker.env pull web
+docker compose --env-file docker.env up -d --no-build web
+```
+
+从本地源码构建时,在仓库目录执行:
 
 ```sh
 cp docker.env.example docker.env
@@ -65,7 +80,9 @@ iOS 统一连接 Web 地址,通过设置中的手机登录二维码或账号
 
 Web 默认从 [GitHub Releases](https://github.com/Lsamien/yaoyao/releases) 检查稳定版本;桌面菜单“检查 App 更新…”可下载并校验 DMG 后手动安装。旧官方发布源会自动归一化为 GitHub,自定义仓库保留。详见 [GitHub 版本升级](docs/github-updates.md)。
 
-发布版本由 `release.json` 记录。macOS 本机服务支持在系统设置中升级 Web 或回滚到上一个版本;其他源码部署更新代码、重新构建并重启服务,Docker 部署通过重新构建镜像并重建容器更新。升级前备份 Web 数据目录,客户端版本要求见对应发布说明。
+发布版本由 `release.json` 记录。macOS 本机服务支持在系统设置中升级 Web 或回滚到上一个版本;其他源码部署更新代码、重新构建并重启服务,Docker 部署通过拉取远程镜像(或自行构建)并重建容器更新。升级前备份 Web 数据目录,客户端版本要求见对应发布说明。
+
+后续发布同时交付本地构建和 Docker Hub 远程镜像,验证固定版本后更新 `latest`,保留旧版本标签。发布者按 [发布流程](docs/release-process.md) 执行,并将镜像地址、架构和验证结果写入发布说明。
 
 ## 开发验证
 

+ 4 - 2
docker.env.example

@@ -1,8 +1,10 @@
 # 宿主机仅在本机发布 15300;需要通过反向代理或可信局域网访问时再改为 0.0.0.0。
 HERMES_YAOYAO_BIND_ADDRESS=127.0.0.1
 HERMES_YAOYAO_PUBLISHED_PORT=15300
-# 可选:使用已经导入或发布的镜像;留空时使用本地构建名称。
-# HERMES_YAOYAO_IMAGE=yaoyao:local
+# 远程通用镜像支持 AMD64 / ARM64;每次发布更新 latest 并保留旧版本标签。
+# HERMES_YAOYAO_IMAGE=samienluo/yaoyao:latest
+# 固定版本:samienluo/yaoyao:v0.4.9;仅 AMD64:samienluo/yaoyao:v0.4.9-amd。
+# 留空时使用本地构建名称 yaoyao:local。
 # YAOYAO_DESKTOP_IMAGE=hermes-yaoyao-desktop:0.4.0
 
 # 部署步骤见 docs/docker-install.md;使用 docker compose --env-file docker.env 启动。

+ 40 - 0
docs/docker-install.md

@@ -6,6 +6,24 @@
 - 准备容器可访问的 Hermes Dashboard/Gateway,通常使用 9119 端口。
 - 获取本项目源码,在仓库目录执行后续命令。
 
+## 已发布的远程镜像
+
+镜像仓库:[samienluo/yaoyao](https://hub.docker.com/r/samienluo/yaoyao)。
+
+| 标签 | 架构 |
+| --- | --- |
+| `v0.4.9-amd` | `linux/amd64` |
+| `v0.4.9` | `linux/amd64`、`linux/arm64`,拉取时自动匹配 |
+| `latest` | 最新稳定通用镜像,当前指向与 `v0.4.9` 相同的镜像 |
+
+```sh
+docker pull samienluo/yaoyao:v0.4.9
+# 需要固定 AMD64 时:
+docker pull samienluo/yaoyao:v0.4.9-amd
+```
+
+每次新版本发布都会更新 `latest`,旧版本标签继续保留。需要固定部署版本时使用具体版本标签。
+
 ## 配置与启动
 
 ```sh
@@ -16,6 +34,7 @@ cp docker.env.example docker.env
 
 | 配置 | 用途 |
 | --- | --- |
+| `HERMES_YAOYAO_IMAGE` | 远程镜像可设为 `samienluo/yaoyao:v0.4.9` 或 `samienluo/yaoyao:latest`;未设置时使用本地构建名称 |
 | `HERMES_YAOYAO_UPSTREAM` | Hermes 上游地址,默认 `http://host.docker.internal:9119` |
 | `HERMES_YAOYAO_BIND_ADDRESS` | Web 的宿主机发布地址,默认 `127.0.0.1`;局域网访问可设为 `0.0.0.0` |
 | `HERMES_YAOYAO_PUBLISHED_PORT` | 宿主机 Web 端口,默认 `15300` |
@@ -24,6 +43,17 @@ cp docker.env.example docker.env
 
 Docker Desktop 可通过 `host.docker.internal` 访问宿主机。Linux 上 Compose 将该名称映射到宿主机网关;Hermes 需要监听容器可访问的宿主机地址。远程 Hermes 直接填写其可访问地址。
 
+使用远程镜像时,在 `docker.env` 设置上述镜像标签后执行:
+
+```sh
+docker compose --env-file docker.env config --quiet
+docker compose --env-file docker.env pull web
+docker compose --env-file docker.env up -d --no-build web
+docker compose --env-file docker.env ps
+```
+
+从本地源码构建时执行:
+
 ```sh
 docker compose --env-file docker.env config --quiet
 docker compose --env-file docker.env up -d --build
@@ -48,6 +78,8 @@ docker compose --env-file docker.env logs --tail=100 web
 
 ## 随 Web 一起部署固定共享桌面
 
+`samienluo/yaoyao` 是 Web 服务镜像;共享桌面使用独立的桌面镜像。
+
 使用配套的 **单个 `compose.desktops.yaml`** 部署文件,同时创建 Web 和共享桌面容器。默认示例为两台桌面;不是在 Web 页面里临时创建虚拟机。
 
 ```sh
@@ -109,6 +141,14 @@ docker compose --env-file docker.env start web
 
 ## 升级与停止
 
+使用远程镜像时,更新 `docker.env` 中的固定版本标签,或继续使用 `latest`,然后拉取并重新创建 Web 容器:
+
+```sh
+docker compose --env-file docker.env pull web
+docker compose --env-file docker.env up -d --no-build web
+docker compose --env-file docker.env ps
+```
+
 更新仓库源码后重新构建和启动:
 
 ```sh

+ 39 - 0
docs/release-process.md

@@ -0,0 +1,39 @@
+# 夭夭 AI 发布流程
+
+“发布新版本”包括本地构建、GitHub Release 附件和 Docker Hub 远程镜像。三部分均完成并验证后,才算发布完成。
+
+## 版本与产物
+
+1. 核对当前提交、工作区、已发布版本和客户端改动。`release.json` 的 `releaseVersion`、`webVersion`、`gitTag` 与根目录 package/lock 版本保持一致。
+2. 完成适用的单元测试、浏览器验证和生产构建;用中文提交修改。正式产物对应已确认的源码提交,并记录真实构建身份。
+3. 构建 Web 源码包、macOS 桌面安装包和适用的 Android 正式签名 APK,验证签名、架构、启动及完整性,生成 `SHA256SUMS.txt`。
+4. 推送源码与版本标签,上传 GitHub Release 附件,核对远端附件状态、大小和 SHA-256。已发布的 Git 标签与旧附件保持不变。
+
+## Docker Hub 远程镜像
+
+固定仓库为 `samienluo/yaoyao`。以每次发布的 `vX.Y.Z` 为版本标签:
+
+| 标签 | 内容 | 更新规则 |
+| --- | --- | --- |
+| `samienluo/yaoyao:vX.Y.Z-amd` | `linux/amd64` | 每个新版本发布,保留旧版本标签 |
+| `samienluo/yaoyao:vX.Y.Z` | 同时包含 `linux/amd64`、`linux/arm64` 的通用镜像 | 每个新版本发布,客户端自动选择架构 |
+| `samienluo/yaoyao:latest` | 最新稳定版本的同一通用镜像 | 新版本验证通过后更新 |
+
+- 远程镜像必须使用本次版本对应的源码与构建产物,不能只改标签或复用旧版内容。
+- 先推送、验证固定版本标签,再将 `latest` 指向已验证的通用镜像。保留全部旧版本标签,不覆盖或删除旧版本。
+- 检查远端 manifest/index:通用版本包含两个目标架构,`-amd` 标签对应 AMD64,`latest` 与新通用版本的 index digest 一致。
+- 拉取并检查两个架构的版本与运行情况,验证 `/healthz`。记录原生或模拟运行方式;`/readyz` 的上游连接状态另行说明。
+- 本地离线 tar 不能代替远程镜像推送。用户另有离线包要求时,同时交付可加载的 tar、镜像标签和校验值。
+
+## 发布说明与最终核验
+
+每次在 `docs/releases/vX.Y.Z.md` 和 GitHub Release 中同步说明:
+
+- 本次改动、Web/桌面/Android 版本、下载附件与签名状态。
+- 三个 Docker Hub 标签及对应架构,并提供拉取或 Compose 更新方法。
+- 远端固定版本与 `latest` 的 digest、架构和运行验证结果。未完成的项目明确标出,不写“已验证”。
+- `latest` 已更新,旧版本标签保留;数据备份、权限或迁移方面的必要说明。
+
+发布完成前,确认 GitHub Release 为正式版本(非草稿、非预发布),最新版本接口指向目标版本,所有附件摘要一致,远程镜像与 `latest` 已按上述规则验证。
+
+当前镜像标签与部署方法见 [Docker 部署说明](docker-install.md)。

+ 28 - 1
docs/releases/v0.4.9.md

@@ -19,10 +19,37 @@
 - `Yaoyao-0.4.9-source.tar.gz`:Web 与桌面端源码。
 - `SHA256SUMS.txt`:发布附件的 SHA-256 校验文件。
 
+## Docker Hub 远程镜像
+
+镜像仓库:[samienluo/yaoyao](https://hub.docker.com/r/samienluo/yaoyao)。
+
+| 镜像标签 | 架构 |
+| --- | --- |
+| `samienluo/yaoyao:v0.4.9-amd` | AMD64 |
+| `samienluo/yaoyao:v0.4.9` | 自动匹配 AMD64 / ARM64 |
+| `samienluo/yaoyao:latest` | 当前指向与 `v0.4.9` 相同的通用镜像 |
+
+```sh
+docker pull samienluo/yaoyao:v0.4.9
+# 仅使用 AMD64:
+docker pull samienluo/yaoyao:v0.4.9-amd
+```
+
+远端镜像清单已核对:通用版本包含 `linux/amd64` 与 `linux/arm64`,`v0.4.9-amd` 与通用版本中的 AMD64 清单一致。`v0.4.9` 与 `latest` 的 index digest 均为 `sha256:402031da41ddf9031e4bd29d797ae763b24bf982343fe73f3d03daea300106b5`。
+
+后续发布同时提供本地构建和远程镜像,新版本验证通过后更新 `latest`,保留旧版本标签。
+
+Compose 用户在 `docker.env` 设置 `HERMES_YAOYAO_IMAGE=samienluo/yaoyao:v0.4.9` 或 `samienluo/yaoyao:latest`,然后执行:
+
+```sh
+docker compose --env-file docker.env pull web
+docker compose --env-file docker.env up -d --no-build web
+```
+
 ## 升级与文件权限
 
 官方发布地址为 https://github.com/Lsamien/yaoyao/releases/tag/v0.4.9 。App 首次启动继续只同步较旧的本机 Web,保留已有更新的独立 Web;默认数据目录为 `~/.yaoyao`。
 
 文件访问默认只允许当前 Profile 工作目录及其子目录,管理员可在“设置 → 文件访问”中添加目录或开启全局授权。规则在服务器即时生效,仍受 Hermes 自身认证、敏感文件与宿主权限限制。配置随服务端数据目录备份,详见 [服务端文件访问权限](https://github.com/Lsamien/yaoyao/blob/v0.4.9/docs/file-access.md)。
 
-升级前备份完整数据目录及加密密钥。源码或 Docker 部署更新版本后重新构建并重启服务,保留原数据目录或命名卷。
+升级前备份完整数据目录及加密密钥。源码部署更新版本后重新构建;Docker 部署拉取对应远程镜像或自行构建,再重建容器,保留原数据目录或命名卷。