From 79830cb43f8792b60cf338e83f478605d5931b0e Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Mon, 3 Aug 2026 00:17:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20client=20release-deploy=20=E5=8A=A0?= =?UTF-8?q?=20if=20=E5=AE=88=E5=8D=AB,mac/ios=20=E6=8A=96=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E4=B8=8D=E9=98=BB=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit run 239:android/windows/macos 全绿、ios 在 Checkout 阶段 git fetch git.51yanmei.com 走 frps 超时挂掉(非 iOS 构建问题;run 238 同代码 fetch 碰巧 成功)。因上一版把 build-ios 加进 release-deploy 的 needs,而 gitea 里 continue-on-error 的 job 失败**仍会 skip 下游 needs** → release-deploy 被跳过。 修:needs 保留四平台(等全部完成、不抢跑 → 收齐已上传产物),但加 `if: always() && needs.build-android.result == 'success'` —— 只要 android (稳定 floor)成功即发布,mac/ios/windows 的瞬断失败不再 skip release-deploy, download-artifact 收当时存在的产物照发。 yaml 校验通过。 Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01A79VtQA1BwTuQN1ThpvYpo --- .gitea/workflows/deploy-client.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/deploy-client.yml b/.gitea/workflows/deploy-client.yml index ec32161..29cb771 100644 --- a/.gitea/workflows/deploy-client.yml +++ b/.gitea/workflows/deploy-client.yml @@ -163,14 +163,18 @@ jobs: # No artifact upload — compile-ios.sh uploads straight to TestFlight via # altool (matches jiu); nothing is produced under dist/ for this job. - # release-deploy 只 needs build-android(唯一稳定可用的平台 floor)。windows/macos/ios - # best-effort:各自 runner+secret 就绪则上传 artifact,release-deploy flatten 收 - # dist-raw/ 里"当时存在"的产物。windows 机离线 / Apple secret 未配 都不阻塞发版 - # (对应平台下载保留 pangolin1 上一版,待可用时下个 client-v* 追上)。 + # release-deploy 发布策略:needs 全部四平台(等它们**完成**,不抢跑),但用 + # `if` 让 mac/ios/windows 的失败不 skip 本 job —— 只要 android(稳定 floor)成功即发。 + # 背景:build-macos/ios 必须跑在 mac runner,其 Checkout(git fetch git.51yanmei.com) + # 走 frps 隧道偶发超时挂掉(run 239 的 ios 就是 fetch fdc13ea 超时,非 iOS 构建问题; + # run 238 同代码 fetch 碰巧成功)。这类瞬断不该阻断已成功平台的发布。 + # · needs 四平台 → download-artifact 收到当时**全部已上传**的产物(修旧 + # `needs:[build-android]` 只等 android、macos/ios 没传就发布漏平台的竞态)。 + # · continue-on-error 在 gitea 里**不**让下游 needs 在失败时继续(会 skip),故必须 + # 配 `if: always() && needs.build-android.result=='success'` 才能「等全部、失败不阻」。 release-deploy: - # 等全部平台 build 完再发布,否则 download-artifact 会漏掉尚未上传的平台 - # (原来只 needs build-android → android 一完就发,macos/ios 常还没传产物)。 needs: [build-android, build-windows, build-macos, build-ios] + if: ${{ always() && needs.build-android.result == 'success' }} # ubuntu-latest = 家里 nas act_runner,与 gitea 同机/同网:Release → Forgejo 的 # API 调用走本地不过 frps 隧道(mac runner 走 git.51yanmei.com→frps→抖,curl 超时 # exit 28,3m3s=release_ensure 60s×3 重试耗尽)。deploy-server/deploy-site 同为