From 227c20fbb0da7867866281f9644cf8e455026b16 Mon Sep 17 00:00:00 2001 From: Nico Wiedemann Date: Sat, 12 Sep 2026 03:58:32 +0200 Subject: [PATCH] ci(google-play): make changesNotSentForReview an input, default true Play refuses to commit the edit in both directions depending on the state it has put the app in: the 1.2.7 upload failed because the parameter was set, and the 1.2.9 upload failed because it was not. Neither value is correct for all time, so take it as an input instead of hardcoding one and rediscovering the other error next release. Default to true while the app has an open policy rejection. Clearing one requires moving the noncompliant version codes to "Not Included" on every track by hand before anything is sent for review, and auto-submission would send the release before that happens. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/google-play.yml | 38 +++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/.github/workflows/google-play.yml b/.github/workflows/google-play.yml index e573a92..01e795d 100644 --- a/.github/workflows/google-play.yml +++ b/.github/workflows/google-play.yml @@ -12,6 +12,13 @@ on: required: false default: internal type: string + changesNotSentForReview: + description: >- + Commit the edit without sending it for review. Required whenever Play has decided + the release must be submitted by hand from the Console. + required: false + default: true + type: boolean workflow_dispatch: inputs: tag: @@ -27,6 +34,11 @@ on: - alpha - beta - production + changesNotSentForReview: + description: Commit the edit without sending it for review + required: false + default: true + type: boolean jobs: deploy: @@ -114,13 +126,21 @@ jobs: whatsNewDirectory: whatsnew/ # Empty when the release carried no mapping.txt; the action skips the input then. mappingFile: ${{ steps.mapping.outputs.path }} - # `changesNotSentForReview` is deliberately not set. Play rejects the parameter - # outright ("Changes are sent for review automatically. The query parameter - # changesNotSentForReview must not be set.") for any edit it has decided must be - # reviewed — which includes every release that adds a permission needing a Play - # Console declaration, such as a new foreground service type. It broke the 1.2.7 - # upload after working for 1.2.6, since nothing in the workflow had changed. + # Play demands this parameter in both directions depending on the state it has put + # the app in, and refuses the commit either way when it disagrees: + # + # unset/false → "Changes cannot be sent for review automatically. Please set the + # query parameter changesNotSentForReview to true." (1.2.9) + # true → "Changes are sent for review automatically. The query parameter + # changesNotSentForReview must not be set." (1.2.7) + # + # Neither value is correct for all time, which is why this is an input rather than a + # hardcoded choice — flip it when Play flips, no workflow edit needed. # - # Holding changes back from review is also the wrong default here: reviews for this - # app are slow, so a release that sits in the console waiting for someone to press - # "send for review" only adds latency (see AGENTS.md, Maintenance Policy). + # It defaults to true because the app currently has an open policy rejection, and a + # rejection has to be cleared by assembling the release by hand anyway: the + # noncompliant version codes must be moved to "Not Included" on every track before + # anything is sent for review. Auto-submitting would send a release that still + # carries them. Once the app is out of that state, false restores the hands-off + # behaviour that suits this app's slow reviews (see AGENTS.md, Maintenance Policy). + changesNotSentForReview: ${{ inputs.changesNotSentForReview }}