Skip to content

ci(release): stop waiting for TestFlight with an expired token - #538

Merged
whes1015 merged 1 commit into
mainfrom
ci/testflight-token-expiry
Aug 18, 2026
Merged

ci(release): stop waiting for TestFlight with an expired token#538
whes1015 merged 1 commit into
mainfrom
ci/testflight-token-expiry

Conversation

@whes1015

Copy link
Copy Markdown
Member

The upload succeeded and the step failed anyway. apple-actions/upload-testflight-build@v5 signs one App Store Connect JWT with a 600-second life — n=600 in its bundled dist/index.js, with no re-signing anywhere in it — and then polls for the build to become visible on a schedule that sleeps 60 + 120 + 240 + 300 = 720 seconds before giving up. The token is guaranteed to die first, so any build Apple takes more than a few minutes to process reports 401 NOT_AUTHORIZED with the binary already delivered. Build 426000342 is on TestFlight; the run is red.

The wait is only there so the action can write metadata afterwards, and this step asks for none: it sets neither release-notes nor uses-non-exempt-encryption, and Info.plist already declares ITSAppUsesNonExemptEncryption.

What is given up is being told when Apple rejects a binary during processing. That signal was already gone — the step failed on the expired token whether processing passed or not, so the red said nothing about the build either way.

這個 PR 做了什麼

相關 issue

  • closes #

怎麼驗

檢查清單

  • tool/check/commits.sh origin/main..HEAD 通過
    —— commit 訊息就是更新日誌,格式見 commit.md
  • 一個 commit 一件事(這條 gate 驗不了,靠自己和 review)
  • mise exec -- flutter analyzemise exec -- flutter test 通過
  • 新的使用者可見字串都走 AppLocalizations,沒有寫死
  • 有 UI 變更的話:用的是 AppSpacing / AppRadius / AppMotion
    深色模式看過,文字對比度可接受

The upload succeeded and the step failed anyway. `apple-actions/upload-testflight-build@v5`
signs one App Store Connect JWT with a 600-second life — `n=600` in its bundled
dist/index.js, with no re-signing anywhere in it — and then polls for the build
to become visible on a schedule that sleeps 60 + 120 + 240 + 300 = 720 seconds
before giving up. The token is guaranteed to die first, so any build Apple takes
more than a few minutes to process reports 401 NOT_AUTHORIZED with the binary
already delivered. Build 426000342 is on TestFlight; the run is red.

The wait is only there so the action can write metadata afterwards, and this
step asks for none: it sets neither release-notes nor uses-non-exempt-encryption,
and Info.plist already declares ITSAppUsesNonExemptEncryption.

What is given up is being told when Apple rejects a binary during processing.
That signal was already gone — the step failed on the expired token whether
processing passed or not, so the red said nothing about the build either way.
@whes1015
whes1015 requested a review from a team as a code owner August 18, 2026 08:48
@whes1015
whes1015 merged commit 50907bb into main Aug 18, 2026
5 of 6 checks passed
@whes1015
whes1015 deleted the ci/testflight-token-expiry branch August 18, 2026 08:48
@github-actions

Copy link
Copy Markdown

OpenCodeReview: Review complete: 0 finding(s) across 1 selected item(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant