Skip to content

chore(release): align Android Play publishing after FGS declaration #6848

Closed

Description

@NotThatKindOfDrLiz

Context

This is the repo follow-up to #6847 and #6841.

Do not start or merge this until #6847 is complete. The Play Console Foreground service permissions declaration must be on file first; otherwise changing Codemagic away from draft uploads can make Android publishing fail at the Play rollout step again.

Problem

codemagic.yaml currently uploads Android builds to the Play production track as drafts:

publishing:
  google_play:
    credentials: $GCLOUD_SERVICE_ACCOUNT_CREDENTIALS
    track: production
    submit_as_draft: true

That was a valid unblock while Play rejected rollouts without the one-time Foreground service permissions declaration. After #6847 is done, keeping submit_as_draft: true becomes a release trap: Codemagic can go green, the artifact can upload, and no Play user receives the update unless someone remembers to manually promote the draft.

The release checklist also still documents the older manual helper path and does not make the Codemagic draft/promotion gate explicit.

Required Repo Work

  1. Confirm chore(release): complete Play foreground service declaration #6847 is complete before making or merging this change.

  2. Decide and document the intended post-declaration Android release behavior.

    Recommended behavior:

    • Publish Codemagic Android builds to the Play internal track without submit_as_draft.
    • Keep production rollout as an intentional Play Console promotion step.
    • This keeps CI artifacts installable by testers and avoids silent production drafts.

    Alternative acceptable behavior, if the team explicitly wants CI to publish production directly:

    • Remove submit_as_draft: true.
    • Keep track: production.
    • Prefer a staged rollout_fraction if production publishing should not immediately reach 100% of users. Codemagic supports rollout_fraction, and it cannot be combined with submit_as_draft.
  3. Update codemagic.yaml accordingly.

  4. Update or remove the stale comment above submit_as_draft: true; it must not describe a Play Console blocker that is already resolved.

  5. Refresh docs/RELEASE_CHECKLIST.md section 6 so Android release steps match the real Codemagic path and explicitly mention any required Play Console promotion/release-track verification.

  6. Review mobile/deploy_android.sh. It currently has a production lane that uploads directly to production. Either align its documented semantics with the chosen release behavior or remove/de-emphasize it from the checklist if Codemagic is the real release path.

Acceptance Criteria

  • chore(release): complete Play foreground service declaration #6847 is complete before this issue is implemented or merged.
  • codemagic.yaml no longer silently uploads production releases as drafts after the Play declaration is complete.
  • The stale foreground-service blocker comment in codemagic.yaml is removed or replaced with current release guidance.
  • docs/RELEASE_CHECKLIST.md section 6 describes the current Android release path, including Play track and promotion expectations.
  • mobile/deploy_android.sh is either aligned with the chosen behavior or no longer presented as the primary production release path.
  • No Dart, l10n, or golden changes are included unless the implementation unexpectedly touches app behavior.

Verification

  • Validate codemagic.yaml still parses as YAML.
  • Review the resulting diff for docs/config-only scope.
  • No Flutter tests are required for a docs/config-only change.

Blocked By

Blocked by #6847. The Google Play declaration and draft promotion must happen first.

Activity

  1. dcadenas commented on Aug 8, 2026

    @dcadenas
    Member

    Unblocking this, and correcting the premise it was written on.

    The Play Console foreground service declaration was already completed on Jul 11, 2026, four weeks before this issue was filed. So the "do not start until #6847 is complete" gate is already satisfied, and #6847 is closed.

    Two corrections to the issue body:

    • The declaration is not a pending prerequisite. It has been on file since Jul 11.
    • Nothing was ever stranded as a production draft. 668 went fully live on Jul 22 and 672 was released on Jul 25 (as a staged rollout that stalled at 20%, tracked separately).

    The work itself still stands. submit_as_draft: true at codemagic.yaml:608 is a real trap: the build goes green, the artifact uploads, and nothing reaches users unless someone remembers to act in the console. The stale comment above it describes a blocker that was resolved on Jul 11 and should go. The release checklist and mobile/deploy_android.sh are still out of step with the actual Codemagic path.

    The recommended behavior in the body (publish to internal without submit_as_draft, keep production rollout an intentional Play Console step) still looks right to me, with one addition from what we just hit: if production rollouts stay staged, something needs to surface a rollout that has stopped part way. A release sitting at 20% for two weeks produced no signal anywhere.

  2. moved this from Triage to In progress in Divine programon Sep 3, 2026
  3. moved this from In progress to Testing in Divine programon Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions