Repository navigation
Conversation
- 设置「关于 → 更新」新增「更新镜像源」下拉(自动 / Cloudflare / CNB / GitHub), 切换后立即落盘、提示并按新源重查一次;AppSettings 新增 update_mirror 字段。 - 客户端新增镜像尝试链:默认 Cloudflare → CNB → GitHub,选中的源排到第一位, 失败依次回退;测试通道不回退 GitHub(releases/latest 只给正式版), 「已是最新」不早退,保留 R2 清单慢一拍时 GitHub 兜底的能力。 - CNB 镜像:读 git-upload-pack 广告里的 tag(匿名可读),按通道选最大 tag, 再取 Release 资产 feed-<product>[-beta].json,并把清单里的下载地址改写到 CNB 同名资产。CNB 没有 latest 别名、仓库文件直链匿名不可读,故走这条路。 - CI:upload-r2 在清单就绪后把三份清单复制成扁平 feed-*.json 资产上传到 Release, 稳定发布同时刷新 beta 键位与 feed-*-beta.json(beta 用户可平滑过渡到正式版), CNB 同步改为由 upload-r2 末尾派发;release.yml 不再并发派发 sync。 - 文档:新增 docs/design/update-mirror.md;RELEASE.md 补充 feed 资产与 CNB 镜像。 - 测试:app_kit update 88 项、one-core update_ 26 项、navop_app settings/update_mirror、 setting_tab 38 项、i18n 契约、node script/test-release-packaging.mjs 43 项全绿。
扩展安装包与各自的 extension-manifest.json 在 R2 / GitHub / CNB 三处都有副本, 现在与「检查更新」共用同一个镜像偏好,选中的源排第一、失败依次回退。 - 候选顺序固定为 [R2, GitHub, CNB]:自动与 Cloudflare 保持历史顺序 (R2 → GitHub → CNB);GitHub 优先 GitHub → R2 → CNB;CNB 优先 CNB → R2 → GitHub。 - CNB 地址由 GitHub Release 地址改写而来,只改写 feigeCode/navop-extensions; 历史仓库 onetcli-extensions 没有镜像,不改写,避免发出必然 404 的请求。 - 扩展市场清单(manifest.json)仍走 R2 → GitHub:CNB 仓库文件直链需要登录, 无法镜像;只有安装包与各自的扩展清单会优先走 CNB。 - 偏好经 extension_runtime::set_extension_mirror 同步:启动时读一次设置, 设置页切换镜像时立即再写一次(进程内 AtomicU8)。 - 设置项描述补充「同时作用于扩展下载」,设计文档补扩展侧顺序与 CNB 限制。 验证:cargo test -p extension-runtime --lib mirror(4)、 --lib extension_downloader(43)、cargo test -p navop_app --lib settings::update_mirror(2)、 --lib setting_tab(38)、--test i18n_locale_keys_contract(1)。
CNB 只允许匿名直读 Release 资产(仓库文件直链需要登录),所以扩展市场 清单 `manifest.json` 也改成 Release 资产发布: - navop-extensions 每次扩展发版时,把仓库根的 `manifest.json` 覆盖发到 固定 tag `manifest` 的 GitHub Release,再派发 CNB 同步;固定 tag 让 客户端不需要做 tag 发现。 - 客户端市场清单候选改为 R2(`extensions/manifest.json`,最新)→ GitHub raw(最新)→ CNB(Release 快照),仍按镜像偏好排序;CNB 上 还没有这份快照时该候选 404,自动回退下一个源。 - 同步更新 network 测试的回退链与设计文档 §8/§9。
上一版把 CNB 候选换成了固定 tag `manifest` 的 Release 快照,但 GitHub 候选 仍是 raw 分支文件,两条链取到的内容来源不一致。现在统一成快照: - 市场清单候选:R2(`extensions/manifest.json`)→ GitHub 的 Release 快照 → CNB 的 Release 快照,按镜像偏好排序;GitHub raw 只作为 Release 快照 缺失时的兜底,老仓库 raw 仍最后兜底。 - `DEFAULT_EXTENSION_MANIFEST_URL` 改指向 GitHub 的 Release 快照, `github-marketplace` 特性构建同样优先快照、raw 次之。 - 更新 network 测试的候选集合与回退链断言,设计文档同步。
CI 用 -D warnings 编译,`GITHUB_MARKETPLACE_MANIFEST_RELEASE_URL` 上一版只在 测试里出现,lib 目标报 constant is never used;改为生产代码引用后已经消除。 顺带把特性构建剩下的两处告警也处理掉: - transfer.rs 里 CNB 排序相关的三个 import 只在非特性分支使用,改成 `#[cfg(not(feature = "github-marketplace"))]` 导入,否则特性构建报 unused imports。 - mirror.rs 的 CNB 市场清单地址与函数只在非特性分支被调用,加 `cfg_attr(feature = "github-marketplace", allow(dead_code))`。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
本次内容
git-upload-pack广告里的 tag(匿名可读)→ 按通道选最大 tag → 取 Release 资产feed-<product>[-beta].json→ 把清单里的下载地址改写到 CNB 同名资产。upload-r2.yml把三份清单复制成扁平feed-*.json资产上传到 GitHub Release;稳定发布同时刷新 beta R2 键位与feed-*-beta.json(beta 用户可平滑过渡到正式版);CNB 同步改为由upload-r2末尾派发,release.yml不再并发派发。docs/design/update-mirror.md,RELEASE.md补充 feed 资产与 CNB 镜像说明。为什么必须先合 main
release-trigger.yml用--ref main取 workflow 定义,CI 侧改动只有在 main 上才会生效;在这之前发布 tag 仍会走旧流水线(只写 R2 稳定清单、不上传 feed 资产)。验证
cargo test -p app_kit --lib update:88 passedcargo test -p one-core --lib update_:26 passedcargo test -p navop_app --lib settings::update_mirror:2 passed;setting_tab:38 passedcargo test -p navop_app --test i18n_locale_keys_contract:1 passednode script/test-release-packaging.mjs:43 passed待发布后确认
首个包含本改动的版本发布后,到 CNB Release 页面确认
feed-*.json资产已被mpgrm releases sync同步;若其按资产名白名单过滤,需要补一条同步规则。