fix(ci): 串行化 mac 三 job(android→macos→ios) 消除单 runner 争用

run#286 暴露:三个 runs-on:mac 并行,家里只一个 mac runner(capacity=1),
android 占住后 macos/ios 抢不到 runner 被整体 cancelled(全步骤含 Checkout
都 cancelled)→ iOS 没跑起来、没上 TestFlight。用 needs 把 mac 三 job 串成
链(build-macos needs android、build-ios needs macos)+ if:!cancelled() 保证
上游失败也照跑,一个跑完再跑下一个,不再争用。windows/deploy-web 在各自
runner 上仍并行。对齐 jiu 的 needs 链。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FEVUXAbFT6bF1Qw27RHWoD
This commit is contained in:
wangjia
2026-09-08 06:59:33 +08:00
parent 8f0c2ef81b
commit 6c6d9636bb
+10
View File
@@ -96,6 +96,13 @@ jobs:
# APPSTORE_API_* 等),macos/ios 正常应成功;continue-on-error 只是抖动兜底。
build-macos:
runs-on: mac
# 串行化 mac 三 job(android→macos→ios):家里只有一个 mac runner(capacity=1),
# 三个 runs-on:mac 并行会抢同一 runner → 抢不到的被取消(run#286 的 macos/ios 全步
# 骤 cancelled 即此)。用 needs 串成链让它们一个跑完再跑下一个;`if: !cancelled()`
# 保证即便上游(android/macos)失败,本 job 仍在其完成后照跑(不因上游 fail 被 skip),
# 与 continue-on-error 一起兜住「单平台抖动不拖累其他平台」。对齐 jiu 的 needs 链。
needs: [build-android]
if: ${{ !cancelled() }}
continue-on-error: true
env:
GOPROXY: https://goproxy.cn,direct
@@ -138,6 +145,9 @@ jobs:
build-ios:
runs-on: mac
# 串行链末环:等 build-macos 完成再跑(单 mac runner 不争用,见 build-macos 注释)。
needs: [build-macos]
if: ${{ !cancelled() }}
continue-on-error: true
env:
GOPROXY: https://goproxy.cn,direct