Skip to content

ci: 发版候选的 Intel 包改在 Apple 芯片的 macos-15 上交叉构建 - #247

Merged
sunerpy merged 1 commit into
mainfrom
ci/candidate-intel-cross
Nov 10, 2026
Merged

sunerpy merged 1 commit into
mainfrom
ci/candidate-intel-cross

Conversation

@sunerpy

@sunerpy sunerpy commented Nov 10, 2026

Copy link
Copy Markdown
Owner

问题

0.3.1 的发版候选(run 42733161564)里,Intel 腿 Bundle x86_64-apple-darwin 用了 26.8 分钟,其中在 macos-15-intel 上冷编译 21.2 分钟;同样的构建在 macos-15(Apple 芯片)上 12.0 分钟。Linux 腿修好之后(#246),Intel 腿就是候选里最慢的一条。另外 macos-15-intel 是 GitHub 最后一个 x86_64 镜像,2027-08 下线。

改动

  • release-candidate.yml:x86_64-apple-darwin 腿的 runner 从 macos-15-intel 改为 macos-15。构建步骤本来就带 --target "$MACOS_TARGET",所以这条腿变成在 Apple 芯片上交叉构建 Intel 包;头部注释写明原因和检查方式。
  • .github/release-targets.json:同步为 runner: macos-15、cross: true。
  • 检查不变:check-macos-bundle.sh 要求每个 Mach-O 只含本腿架构、minos ≤ 11.0,并运行包里的 --version、要求是本次版本;在 Apple 芯片上这一步由 Rosetta 2 执行 x86_64 二进制。
  • Intel 真机运行不变:ci.yml 的 macos-x64 job 和 install-scripts.yml 仍在 macos-15-intel 上跑。
  • 文档:docs/runbook.md(发布 · 构建腿)、docs/roadmap.md、docs/acceptance.md。

验证

  • 新测试 scripts/release/test_release_workflows.py@test_the_intel_package_builds_on_apple_silicon 在改动前失败(x86_64-apple-darwin 的 runner 是 macos-15-intel),改动后通过;发布脚本测试 220 个通过。
  • actionlint .github/workflows/release-candidate.yml
  • make verify(74a5669d,rebase 到 build: voltip-server 的发布构建拆成 16 个代码生成单元 #246 之前的提交):overall_exit=0。rebase 无冲突。
  • 合并后立刻用 backfill 模式为 v0.3.1 跑一次候选(只构建、封存,不发布、不写状态),确认 Intel 腿成功、不超过 22 分钟、检查步骤报出 voltip 0.3.1,并把产物与已发布的 Voltip_0.3.1_x64.app.tar.gz 逐个 Mach-O 比对(架构、minos、依赖的动态库、大小 ±5%)。不通过就立即回退这次改动。
  • No real host name, token or key in the change (.github/scripts/check-no-production-hosts.sh)

风险与回退

只改发版候选里 Intel 包的构建机器。最坏情况是交叉构建的包和原生构建的不一致,上面的 backfill 比对就是为了在下次发版前发现它。回退就是还原这次提交。

0.3.1 的候选(42733161564)里 Intel 腿用了 26.8 分钟,其中 macos-15-intel 上冷编译 21.2 分钟;
同样的构建在 macos-15 上 12.0 分钟。macos-15-intel 是 GitHub 最后一个 x86_64 镜像,2027-08 下线。

- release-candidate.yml:x86_64-apple-darwin 腿的 runner 改为 macos-15,构建本来就带
  --target "$MACOS_TARGET";release-targets.json 同步为 runner macos-15、cross true。
- check-macos-bundle.sh 不变:每个 Mach-O 只含本腿架构、minos ≤ 11.0,并运行包里的
  --version(在 Apple 芯片上由 Rosetta 2 执行)。
- Intel 真机运行仍在 ci.yml 的 macos job 与 install-scripts.yml 的 macos-15-intel 上。
- 新测试 test_the_intel_package_builds_on_apple_silicon 在改动前失败(runner 为 macos-15-intel)。
@codecov

codecov Bot commented Nov 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #247      +/-   ##
==========================================
- Coverage   93.57%   93.57%   -0.01%     
==========================================
  Files         489      489              
  Lines       85860    85860              
  Branches     4909     4909              
==========================================
- Hits        80347    80342       -5     
- Misses       4844     4849       +5     
  Partials      669      669              
Flag Coverage Δ
rust 93.81% <ø> (-0.01%) ⬇️
web 92.39% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sunerpy
sunerpy merged commit 6721574 into main Nov 10, 2026
16 checks passed
@sunerpy
sunerpy deleted the ci/candidate-intel-cross branch November 10, 2026 07:46
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.

1 participant