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

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

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

我提议删除 hmcl_update_link.csv,并使用两个新的文件来控制更新:build.csvupdate.csv(能改成 JSON 或 TOML 的话就更好了)。


build.csv 用来控制构建流程,内容如下:

hmcl_dev_version_root,a.b.0
hmcl_stable_version_root,x.y
hmcl_stable_version_build_number,z

开发版使用 HMCL-dev/HMCL 仓库的 release 分支进行发布,并且废弃现在所用的 javafx 分支(当时选择这个分支的原因是不用改 CI 服务器的配置,现在不用担心这个了);
稳定版使用 HMCL-dev/HMCL-stable 仓库的 release/x.y 分支

开发版的版本号会在对应的 hmcl_dev_version_root 后附加 CI 的构建号,而稳定版的版本号使用 hmcl_stable_version_build_number 作为构建号。


update.csv 用来发布更新,https://hmcl.huangyuhui.net/download/ 的开发版下载链接最好也遵循这个文件的配置。这个文件内容如下:

hmcl_${version_type}_version,x.y.z
hmcl_${version_type}_jar,https://repo1.maven.org/maven2/org/glavo/hmcl/hmcl-stable/x.y.z/hmcl-stable-x.y.z.jar
hmcl_${version_type}_jarsha1,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hmcl_${version_type}_universal,https://hmcl.huangyuhui.net
hmcl_${version_type}_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.14&preview=true

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

若是存在 stable_previewdev_preview,则更新服务器返回的 JSON 中应当包含字段

"preview": true

HMCL 将通过该字段决定是否要展示预览版的 changlog。

此外,hmcl_${version_type}_force 也是可选的,仅在出现了严重问题,需要强行让用户降级更新时才会填这条数据。

如果我们使用了[新的发布模型](https://github.com/HMCL-dev/HMCL/issues/4075),那么 CI 服务器也需要进行一些更新来匹配这个发布模型。 我提议删除 `hmcl_update_link.csv`,并使用两个新的文件来控制更新:`build.csv` 和 `update.csv`(能改成 JSON 或 TOML 的话就更好了)。 --- `build.csv` 用来控制构建流程,内容如下: ```csv hmcl_dev_version_root,a.b.0 hmcl_stable_version_root,x.y hmcl_stable_version_build_number,z ``` 开发版使用 `HMCL-dev/HMCL` 仓库的 `release` 分支进行发布,并且废弃现在所用的 `javafx` 分支(当时选择这个分支的原因是不用改 CI 服务器的配置,现在不用担心这个了); 稳定版使用 `HMCL-dev/HMCL-stable` 仓库的 `release/x.y` 分支 开发版的版本号会在对应的 `hmcl_dev_version_root` 后附加 CI 的构建号,而稳定版的版本号使用 `hmcl_stable_version_build_number` 作为构建号。 --- `update.csv` 用来发布更新,https://hmcl.huangyuhui.net/download/ 的开发版下载链接最好也遵循这个文件的配置。这个文件内容如下: ```csv hmcl_${version_type}_version,x.y.z hmcl_${version_type}_jar,https://repo1.maven.org/maven2/org/glavo/hmcl/hmcl-stable/x.y.z/hmcl-stable-x.y.z.jar hmcl_${version_type}_jarsha1,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx hmcl_${version_type}_universal,https://hmcl.huangyuhui.net hmcl_${version_type}_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.14&preview=true ``` `stable_preview` 和 `dev_preview` 对应的数据可以空缺,若是空缺则说明当前没有预发布版,服务器应当忽略用户请求时的 `preview=true` 参数,直接返回 `stable` 和 `dev` 的版本信息。 若是存在 `stable_preview` 和 `dev_preview`,则更新服务器返回的 JSON 中应当包含字段 ``` "preview": true ``` HMCL 将通过该字段决定是否要展示预览版的 changlog。 此外,`hmcl_${version_type}_force` 也是可选的,仅在出现了严重问题,需要强行让用户降级更新时才会填这条数据。
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.