Skip to content

Add weekly TestFlight public-beta promotion#25712

Draft
jkmassel wants to merge 2 commits into
trunkfrom
jkmassel/friday-testflight-promotion
Draft

Add weekly TestFlight public-beta promotion#25712
jkmassel wants to merge 2 commits into
trunkfrom
jkmassel/friday-testflight-promotion

Conversation

@jkmassel

@jkmassel jkmassel commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the two beta-promotion tiers on top of the per-commit internal TestFlight builds (#25674), turning "release" into picking a build. Every promotion is a metadata-only App Store Connect call (distribute_only) — no rebuild.

per-commit  →  internal TestFlight
daily 00:00 →  last build of the day  →  Nightly Beta Testers   (automatic)
weekly      →  a developer picks a nightly  →  public beta        (human-chosen)
  • Daily (automatic)promote_nightly_build distributes the last processed build of the day to the Nightly Beta Testers group (WordPress + Jetpack).
  • Weekly (human-picked)gather_testflight_candidates lists the nightly builds in Slack and opens a Buildkite block step; promote_build ships the chosen build to public beta.

How it works

  • Candidates come from App Store Connect, not reconstructed build codes — each carries its real marketing version, and the weekly list reads the Nightly Beta Testers group's members.
  • Scoping — highest marketing version present (public beta tracks the latest line) → last 7 days → newest-first, enriched with the commit/PR from the matching Buildkite build.
  • The pick — Slack presents the list and links to the block step's unblock dialog; the selection happens in Buildkite (block-step fields can't be submitted from Slack). WordPress and Jetpack share a build code, so one pick promotes both.

Safety

Both lanes distribute for real only on trunk (the scheduled branch); any other branch or local run defaults to a dry run that touches nothing (override with PROMOTE_DRY_RUN).

Not in this PR

  • Buildkite schedules (managed in Terraform) — daily and weekly, both on trunk. Setup is documented in docs/testflight-promotion.md.
  • Richer "what's new" from the PRs since the last public build — currently a minimal placeholder.
  • Reader stays excluded (archive broken since Move PostHelper to app target #25321).

Testing

Validated end-to-end on CI via temporary branch-gated steps (since removed):

  • Real nightly promotion → Nightly Beta Testers for WordPress + Jetpack (#32892)
  • Weekly gather reads the nightly group + opens the block-step picker; empty group → "nothing to promote" (#32896, #32888)
  • Latest-line + 7-day scoping and the dry-run gate — standalone logic tests
  • Create the daily + weekly Buildkite schedules
  • First real public promotion from trunk

@dangermattic

Copy link
Copy Markdown
Collaborator
1 Warning
⚠️ This PR is larger than 500 lines of changes. Please consider splitting it into smaller PRs for easier and faster reviews.
1 Message
📖 This PR is still a Draft: some checks will be skipped.

Generated by 🚫 Danger

@wpmobilebot

wpmobilebot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor
App Icon📲 You can test the changes from this Pull Request in WordPress by scanning the QR code below to install the corresponding build.
App NameWordPress
ConfigurationRelease-Alpha
Build Number32906
VersionPR #25712
Bundle IDorg.wordpress.alpha
Commit5d7328e
Installation URL50p7a8c8areuo
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.

@wpmobilebot

wpmobilebot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor
App Icon📲 You can test the changes from this Pull Request in Jetpack by scanning the QR code below to install the corresponding build.
App NameJetpack
ConfigurationRelease-Alpha
Build Number32906
VersionPR #25712
Bundle IDcom.jetpack.alpha
Commit5d7328e
Installation URL38hs53187cag8
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.

@jkmassel jkmassel force-pushed the jkmassel/friday-testflight-promotion branch 3 times, most recently from ca61805 to 8fd287c Compare June 27, 2026 03:19
jkmassel added 2 commits June 26, 2026 22:23
Promote the last processed build of the day to the Nightly Beta Testers group
for WordPress and Jetpack — a metadata-only App Store Connect call, no rebuild.
Runs automatically on a daily schedule (`promote_nightly_build` lane +
.buildkite/promote-nightly.yml). Distributes for real only on trunk (the
scheduled branch); anywhere else it's a dry run.
List the nightly-group builds in Slack and let a developer pick one from a
Buildkite block step, then promote it to public beta (gather_testflight_candidates
+ promote_build lanes + .buildkite/promote-testflight.yml). Candidates are scoped
to the latest marketing line and the last 7 days, newest first, and the Slack
message links straight to the block step's unblock dialog.
@jkmassel jkmassel force-pushed the jkmassel/friday-testflight-promotion branch from 8fd287c to 5d7328e Compare June 27, 2026 04:28
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.

3 participants