Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions .github/workflows/ios-testflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,22 @@ on:
default: false
type: boolean
schedule:
# Nightly at 09:10 UTC. The decide job skips the run only when the current
# main HEAD was already uploaded by a prior successful run (SHA compare, not
# a wall-clock window), so a failed or missed nightly retries the
# not-yet-uploaded commit instead of permanently stranding it.
- cron: "10 9 * * *"
# Every ~2h (at :17 to stay off the top-of-hour rush). The decide job skips a
# run only when the current main HEAD was already uploaded by a prior
# successful run (SHA compare, not a wall-clock window), so an iOS-affecting
# change reaches internal TestFlight within ~2h of landing on main, and a
# failed or missed run retries the not-yet-uploaded commit instead of
# permanently stranding it.
#
# Why ~2h and not a push trigger / per-commit: a per-push lane needs either a
# shared concurrency group (which cancels superseded pending runs into red
# checks) or per-SHA concurrency (which removes the serialization that keeps
# parallel archives from racing on the timestamp build number). ~2h spacing
# keeps runs from overlapping (an archive+upload takes ~30-60m), so this
# single per-ref lane stays serialized and uploads never collide. If faster
# turnaround is ever needed, tighten the interval (still > one archive's
# duration) rather than adding a push trigger.
- cron: "17 */2 * * *"

concurrency:
group: ios-testflight-${{ github.ref_name }}
Expand Down
Loading