调整更新服务器以匹配新的发布模型 #1

Open
opened 2025-07-11 18:42:08 +08:00 by Glavo · 0 comments
Owner

如果我们使用了新的发布模型,那么 CI 服务器也需要进行一些更新来匹配这个发布模型。

我提议删除 hmcl_update_link.csv,并使用 update.json 来控制更新服务器。

该文件内容遵循 update.json.schema 的规范,其内容类似这样:

{
    "${version_type}": {
        "version": "x.y.z"
        "jar": "https://repo1.maven.org/maven2/org/glavo/hmcl/hmcl-xxx/x.y.z/hmcl-xxx-x.y.z.jar",
        "jarsha1": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "universal": "https://hmcl.huangyuhui.net",
        "force": true
    }
}

其中 ${version_type} 可能是以下内容:

  • stable
  • stable-preview
  • dev
  • dev-preview

带有 -preview 后缀的 ${version_type} 代表预发布版,仅推送给开启了接受预览更新的用户。接受预览更新的用户在请求更新 API 时会在请求链接中附加一个新的参数 preview=true,类似这样:

https://hmcl.huangyuhui.net/api/update_link?channel=stable&version=3.6.18&preview=true

https://hmcl.huangyuhui.net/api/update_link 接收到请求时,应当根据 channel 参数和 preview 参数来判定 ${version_type} 的具体值,并返回 update.json 中该 ${version_type} 所对应的 json 对象。服务器不应当对该对象做过多处理,这样未来我们可以灵活地添加更多字段(比如我们在考虑加一个 preview 字段,这样 HMCL 可以根据该字段决定是否应该展示预览版的更新日志)。

此外,stable-previewdev-preview 条目可以空缺,若是空缺则说明当前没有预发布版,服务器应当忽略用户请求时的 preview=true 参数,直接返回 stabledev 的版本信息。


另外我希望分离 https://hmcl.huangyuhui.net/download/ 页面与本仓库和 CI 的关联,使主页完全静态化。

现在该页面的稳定版下载部分已经出现了问题。标题版本号跟着最新稳定版在走(3.6.18),但实际文件依然停留在 3.6.12

此外,未来我希望不再将 exe 和 sh 上传至 maven central,这些文件可以通过蓝奏云等方式分发。由于这些内容需要手动上传,将其与更新功能分离是更好的选择。

如果我们使用了[新的发布模型](https://github.com/HMCL-dev/HMCL/issues/4075),那么 CI 服务器也需要进行一些更新来匹配这个发布模型。 我提议删除 `hmcl_update_link.csv`,并使用 [`update.json`](https://git.hmcl.net/Glavo/hmcl-update/src/branch/main/update.json) 来控制更新服务器。 该文件内容遵循 [`update.json.schema`](https://git.hmcl.net/Glavo/hmcl-update/src/branch/main/update.json.schema) 的规范,其内容类似这样: ```json { "${version_type}": { "version": "x.y.z" "jar": "https://repo1.maven.org/maven2/org/glavo/hmcl/hmcl-xxx/x.y.z/hmcl-xxx-x.y.z.jar", "jarsha1": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "universal": "https://hmcl.huangyuhui.net", "force": true } } ``` 其中 `${version_type}` 可能是以下内容: * `stable` * `stable-preview` * `dev` * `dev-preview` 带有 `-preview` 后缀的 `${version_type}` 代表**预发布版**,仅推送给开启了接受预览更新的用户。接受预览更新的用户在请求更新 API 时会在请求链接中附加一个新的参数 `preview=true`,类似这样: ``` https://hmcl.huangyuhui.net/api/update_link?channel=stable&version=3.6.18&preview=true ``` `https://hmcl.huangyuhui.net/api/update_link` 接收到请求时,应当根据 `channel` 参数和 `preview` 参数来判定 `${version_type}` 的具体值,并返回 `update.json` 中该 `${version_type}` 所对应的 json 对象。服务器不应当对该对象做过多处理,这样未来我们可以灵活地添加更多字段(比如我们在考虑加一个 `preview` 字段,这样 HMCL 可以根据该字段决定是否应该展示预览版的更新日志)。 此外,`stable-preview` 和 `dev-preview` 条目可以空缺,若是空缺则说明当前没有预发布版,服务器应当忽略用户请求时的 `preview=true` 参数,直接返回 `stable` 和 `dev` 的版本信息。 --- 另外我希望分离 [`https://hmcl.huangyuhui.net/download/`](https://hmcl.huangyuhui.net/download/) 页面与本仓库和 CI 的关联,使主页完全静态化。 现在该页面的稳定版下载部分已经出现了问题。标题版本号跟着最新稳定版在走(`3.6.18`),但实际文件依然停留在 `3.6.12`。 此外,未来我希望不再将 exe 和 sh 上传至 maven central,这些文件可以通过蓝奏云等方式分发。由于这些内容需要手动上传,将其与更新功能分离是更好的选择。
Glavo changed title from 更新 CI 服务器以匹配新的发布模型 to 调整更新服务器以匹配新的发布模型 2025-10-02 14:30:16 +08:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Glavo/hmcl-update#1
No description provided.