Add production staged-rollout growth - #23135
Conversation
Add the `advance_production_rollout` fastlane lane, which reads the current production rollout back from Play and advances WordPress and Jetpack one step: for an `inProgress` release it raises `user_fraction` to the next value in `PRODUCTION_ROLLOUT_STEPS` ([1, 2, 5, 10, 20, 50]%), and finalizes to `completed` past the top step. It acts only on an `inProgress` release, leaving `draft`, `halted`, and `completed` releases untouched, and errors when the two apps' rollout states differ. Add `.buildkite/commands/advance-production-rollout.sh` and `.buildkite/schedules/advance-production-rollout.yml` to run the lane.
|
|
|
|
|
Note that I have tested this while the apps were in Our hope was that this might be a way to automatically publish approved releases, but unfortunately, this only updates the initial rollout percentage if the release is not published yet. Note that #23143 proposes promoting an existing beta release instead of creating a new one, which means we might not require a second review and this will be a moot point. Depending on how that goes, we might need to at least a note to the Slack message from this PR about this gotcha - or better yet have some kind of manual mechanism that starts this rollout process, instead of doing it on a schedule. |


Description
Adds an
advance_production_rolloutfastlane lane that reads the current production rollout back from Play and advances WordPress and Jetpack one step, plus the Buildkite command and schedule to run it.inProgressrelease'suser_fractionto the next value inPRODUCTION_ROLLOUT_STEPS([1, 2, 5, 10, 20, 50]%), finalizing tocompletedpast the top step.inProgressrelease —draft,halted(paused), andcompletedare left untouched, so a scheduled run never resumes a paused rollout. The write re-reads the track inside its own edit and bails if the release is no longerinProgress..buildkite/schedules/advance-production-rollout.yml+.buildkite/commands/advance-production-rollout.sh). Advances, finalizes, and failures post to Slack; no-op runs stay quiet.The lane advances an already-started rollout only; it no-ops until a release is moved from
drafttoinProgress.Testing instructions
No manual test steps — this will be exercised as part of an upcoming release, with any issues addressed in a follow-up.