Skip to content

ci(release): 同步 1.21.1 多版本发布配置 - #248

Merged
Gu-ZT merged 1 commit into
Anvil-Dev:dev/1.21.1from
Gu-ZT:multi-version/1.21.1
Nov 10, 2026
Merged

Gu-ZT merged 1 commit into
Anvil-Dev:dev/1.21.1from
Gu-ZT:multi-version/1.21.1

Conversation

@Gu-ZT

@Gu-ZT Gu-ZT commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

同步本开发线的 Create Multi-Version Releases 入口说明,由默认分支 dev/26.1 统一上传两站、Maven Central 和 GitHub ReleaseFile。两站失败不重试、不阻塞公开与升版;Maven 或 ReleaseFile 失败使整体运行失败。日志按祖先 tag 和版本类型选取范围。

Cjsah Maven 依赖仓库已使用 releases 路径,本 PR 将 URL 统一为 https://server.cjsah.net:1002/maven/releases/。上传仍使用机密 MAVEN_URL。

验证:本分支 Wrapper/JDK 下 gradlew.bat help --no-configuration-cache --console=plain 通过;python -B -X utf8 -m unittest discover -s .github/ci(2 项通过);git diff --check 通过。总控逻辑由面向 dev/26.1 的配套 PR 提供。

- 为 1.21.1 开发线注明统一发布入口、日志选择和失败规则
- 统一 Cjsah Maven 依赖仓库地址,上传沿用 MAVEN_URL
@Gugle2308

Copy link
Copy Markdown

🌿 Roseau API Breaking Change Report

Module Status Breaking Changes
codec ✅ Compatible 0
collision ✅ Compatible 0
cube ✅ Compatible 0
config ✅ Compatible 0
integration ✅ Compatible 0
moveable-entity-block ✅ Compatible 0
network ✅ Compatible 0
rendering ⚪ Skipped —
font ✅ Compatible 0
explosion ✅ Compatible 0
rpc ✅ Compatible 0
space-select ✅ Compatible 0
util ✅ Compatible 0
math ✅ Compatible 0
multiblock ✅ Compatible 0
recipe ✅ Compatible 0
registrum ✅ Compatible 0
sync ✅ Compatible 0
ui ⚪ Skipped —
wheel ✅ Compatible 0
main ✅ Compatible 0

Full CSVs: see the Artifacts section of this workflow run.

@Gugle2308 Gugle2308 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

结论:settings.gradle 的尾斜杠改动对 Gradle 解析无影响(Gradle 会标准化仓库 URL),文档的三条日志规则与配套 PR #252 的实现也逐条吻合;唯一需要处理的是合并顺序:文档指向的 Create Multi-Version Releases 工作流目前还不存在,要等尚未合并的 #252 把 release.yml 改名后才会出现。

审查范围:base dev/1.21.1 → head 7afefcc3,2 文件 +6/−4(patch-diff 与 API 声明逐位一致)、draft=false、mergeable=true、state=open、无既有 review。

✅ 一、已独立验证的部分

检查点 结论
.github/ci 回归测试 我把 head 的脚本抽出来在本地实跑:Ran 2 tests — OK,与 PR 描述「2 项通过」一致
settings.gradle 尾斜杠 只改了 pluginManagement 里 cjsah 那一行;Gradle 会规范化 Maven 仓库 URL,加不加尾斜杠解析到同一仓库,因此本次改动不改变解析行为
上传侧地址来源 .github/ci/publish_maven.py:103 读 os.environ["MAVEN_URL"],ci.yml:39 传 secrets.MAVEN_URL;全仓无硬编码上传地址,与 PR 描述一致
本分支无 release workflow 本线只有 Build and Test/CI for Mod/Pull Request Check/Roseau PR Comment,确实没有发布入口,因此文档指引到默认分支是合理的
「两站失败不阻塞」 与 #252 一致:mod-sites 加 continue-on-error: true,且 publish: needs: [prepare, seal, central] 不含 mod-sites

文档三条日志规则与 #252 release_notes.py 实现精确对应(这是本 PR 最值得肯定的部分,逐条给出证据):

prerelease = release_type(plan["version"]) != "release"
for item in sorted(releases, key=lambda r: (r["published_at"], r["id"]), reverse=True):
    tag = item["tag_name"]
    if tag == plan["tag"] or (item["prerelease"] and not prerelease):
        continue                                    # ← 正式版时跳过所有预发布候选
    comparison = github(f"compare/{quote(tag, safe='')}...{sha}?per_page=1", missing=True)
    if comparison and comparison["status"] in {"ahead", "identical"}:
        previous = tag; break                       # ← 祖先关系判定
  • 「按提交祖先关系选择」→ compare/… 的 status ∈ {ahead, identical} ✅
  • 「预发布可接正式版或预发布」→ prerelease=True 时只排除自身 tag ✅
  • 「正式版只接正式版」→ prerelease=False 时额外排除 item["prerelease"] ✅

⚠️ 二、合并顺序依赖:文档入口当前不存在(主要项)

dev/26.1 现有 6 个 workflow,名称分别是 Build and Test、CI for Mod、Upload release to a mod site、Pull Request Check、Release AnvilLib、Roseau PR Comment,没有任何名为 Create Multi-Version Releases 的工作流;全仓 grep 该字符串,只命中本 PR 的 RELEASING.md。

它由仍处于 open 的 #252(ci(release): 统一多版本发布入口和更新日志范围)提供,其 diff 中确实有:

+name: Create Multi-Version Releases

⇒ 若本 PR 先于 #252 合入,dev/1.21.1 的 RELEASING.md 会让用户到 Actions 里找一个不存在的入口;同时「见默认分支发布文档」这个链接指向的仍是旧内容(# AnvilLib 正式发布),"版本后缀、自动日志、预检、演练与续跑" 这些章节要等 #247/#252 落地后才对得上。

建议:与 #252 同批合并并让本 PR 后合;或在文档里加一句"发布入口由默认分支 dev/26.1 的 #252 提供",这样即使先合也不会让用户以为入口丢了。

💡 三、roseau.gradle:32 没有尾斜杠是故意的,建议把文档措辞限定

gradle/scripts/roseau.gradle 里同一个 URL 出现两次,且两处写法不同:

17:        url = 'https://server.cjsah.net:1002/maven/releases/'          // 有斜杠:Gradle 仓库声明
32:    for (repoUrl in ['https://repo1.maven.org/maven2',
                       'https://server.cjsah.net:1002/maven/releases'])  // 无斜杠:字符串拼接基址
...
        def conn = new URI("$repoUrl/$groupPath/$moduleName/maven-metadata.xml")   // ← 自己补 /

第 32 行是 "$repoUrl/…" 的拼接基址,加尾斜杠会生成 …/releases//dev/…(双斜杠)。所以当前状态正确,但 PR 描述/RELEASING.md 写的是「URL 统一为 …/releases/」,后人照做会把第 32 行也加上斜杠。

建议:文档措辞限定为「Gradle 仓库声明统一为 …/releases/」,或在该行加一行注释说明"此处为拼接基址,勿加尾斜杠"。

💡 四、其余(非阻塞)

  1. pluginManagement 仓库顺序两线不同:本线是 cjsah → neoforged,dev/26.1 是 neoforged → cjsah(#252 只改斜杠、不动顺序)。属既有差异、本 PR 未改;若目标是"两线配置一致"可顺手对齐。
  2. 可达性无法独立核实:我在沙箱内请求 https://server.cjsah.net:1002/(根路径与 …/releases/)均返回连接失败(000),而对照 https://github.com/ 返回 200,DNS 可解析到 113.9.93.117。这可能是沙箱出网策略或该端口不可达,不能据此判定地址失效;由于本 PR 对地址只加了尾斜杠(Gradle 侧无行为变化),风险很低,但请作者以自己实跑 gradlew.bat help 的结果为准。
  3. PR 描述的验证项:gradlew.bat help(Windows)与 Actions 语义我无法在此复现;.github/ci 的 2 项测试我已实测通过。

验证边界

settings.gradle 仅做静态语义判定(Gradle 仓库 URL 规范化),未实际跑 Gradle 解析;.github/ci 的 2 项测试在本地 Python 3.11.2 实跑通过;#252 的行为结论来自其 patch-diff 源码阅读(尚未合并,内容可能再变);Cjsah 私服可达性未能核实(见上)。

@Gu-ZT
Gu-ZT merged commit 50a2f19 into Anvil-Dev:dev/1.21.1 Nov 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants