Skip to content

Retry the Play publish with the opposite review flag - #811

Merged
patrickrb merged 1 commit into
devfrom
fix/play-publish-review-flag
Sep 9, 2026
Merged

patrickrb merged 1 commit into
devfrom
fix/play-publish-review-flag

Conversation

@patrickrb

Copy link
Copy Markdown
Owner

Why

The dev -> staging promotion (#810) ran green but no internal release appeared on Play. The Android run's "Publish AAB to Play" step is continue-on-error, so the failure only showed up as an annotation:

Uploading ft8af/app/build/outputs/bundle/release/app-release.aab
Successfully uploaded 1 artifacts
Committing the Edit
##[error]Changes cannot be sent for review automatically. Please set the query
parameter changesNotSentForReview to true. Once committed, the changes in this
edit can be sent for review from the Google Play Console UI.

The AAB uploaded fine; the edit was never committed, so android-dev.1231 / 0.150.0-dev.1231 never reached the internal track. The Sept 8 staging build (android-dev.1225) committed cleanly, so the app's Play Console review state flipped between the two — consistent with the app now having review-gated changes pending.

What

changesNotSentForReview is not really ours to choose. Google's edit commit demands one specific value and rejects the other, and which one it wants depends on Console state that changes outside CI:

Play Console state commit behavior
normal reviewed app auto-sends for review; rejects the flag ("...must not be set")
review-gated changes pending refuses to auto-send; requires the flag true

We have been burned in both directions — false broke android-dev.1231 today, true broke android-dev.1026 once the app went back to normal — and the step comment had turned into a note about which way to hand-flip it next. So instead of flipping the literal again:

  • keep false (the normal path) as the first attempt;
  • add a retry step that re-runs the upload with changesNotSentForReview: true only when the first commit failed. The failed edit is never committed, so its versionCode stays unused and re-uploading the same AAB is safe;
  • when the retry is what succeeded, emit a warning: the release is on the track but was not sent for review, so someone has to submit the pending changes in the Play Console before testers get the build;
  • the existing failure warning now only fires when the retry also failed, and the run summary's Play track: ... (publish: ...) line reflects the retry outcome.

Testing

Validated that the workflow still parses and that the four steps' if conditions and flag values are wired as intended.

No unit test accompanies this — the change is entirely GitHub Actions workflow wiring, which the repo's JVM test suite cannot reach. It gets exercised for real by the next dev -> staging promotion.

Note

This unblocks future staging builds. The current 0.150.0 internal build still has to be re-cut (the next promotion run will do it with a fresh run number / versionCode), and if the retry path is what fires, the Play Console will need a manual "send for review".

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ht2BB4TWtkmC5EW5GsPXEM

The staging build android-dev.1231 uploaded its AAB but could not commit
the Play edit:

  Changes cannot be sent for review automatically. Please set the query
  parameter changesNotSentForReview to true.

so no internal release appeared. Google's edit commit demands one
specific value for changesNotSentForReview and rejects the other, and
which one it wants depends on Play Console review state that changes
outside CI — a normal reviewed app rejects the flag, an app with
review-gated changes pending requires it. Both directions have broken a
staging upload now (false today, true back at android-dev.1026), so stop
hand-flipping the literal: keep the normal-path value as the first
attempt and retry once with the opposite value when the commit is
refused.

The failed edit is never committed, so its versionCode stays unused and
the retry can re-upload the same AAB.

A successful retry means the release is on the track but was NOT sent for
review, so it emits a warning saying a human has to submit the pending
changes in the Play Console. The failure warning and the run summary's
Play outcome now both account for the retry.

No unit test accompanies this: the change is entirely GitHub Actions
workflow wiring, which the repo's JVM test suite cannot reach.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ht2BB4TWtkmC5EW5GsPXEM
@codecov

codecov Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 42.40%. Comparing base (caadc95) to head (c98505e).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff            @@
##                dev     #811   +/-   ##
=========================================
  Coverage     42.40%   42.40%           
  Complexity      228      228           
=========================================
  Files           270      270           
  Lines         32450    32450           
  Branches       3735     3735           
=========================================
  Hits          13761    13761           
  Misses        18413    18413           
  Partials        276      276           
Flag Coverage Δ
android 17.21% <ø> (ø)
native 9.93% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@patrickrb
patrickrb merged commit a34e3fe into dev Sep 9, 2026
17 checks passed
@patrickrb
patrickrb deleted the fix/play-publish-review-flag branch September 9, 2026 21:01
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.

1 participant