Skip to content

gplay releases upload

Upload an AAB and attach it to a release on the given track.

Performs the full Edit lifecycle in one call: edits.insert → bundles.upload → tracks.update → edits.commit

Targeting production defaults to a draft release (ADR-0002) unless --complete or --staged is supplied. Any string is accepted as --track so closed-test tracks with custom names just work.

gplay releases upload <aab> [flags]
FlagDescription
--completeforce the release status to completed (1.0 user fraction)
--confirmexplicit confirmation required for production publishes (--complete / --staged on production)
--draftforce the release status to draft
--dry-runvalidate inputs and preview the release payload without any HTTP call
--keep-edit-on-failureskip the auto-discard cleanup on failure (debug)
--output stringoutput format: table, json, or markdown (default: auto — table on TTY, json in pipes/CI)
--package stringAndroid package name (overrides .gplay/config.json pin)
--release-notes stringrelease notes text (applied to the app's default language)
--release-notes-dir stringdirectory of <locale>.txt files (with optional default.txt fallback)
--staged floatstart a staged rollout at this fraction (0 < f ≤ 1.0)
--track stringtarget track (internal, alpha, beta, production, or any closed-track name)
FlagDescription
--account stringname of a stored Account to use (overrides env and active Account)
--retry intretry transient failures (transport errors, 5xx, 429) up to N times with exponential backoff (default: 0, no retry)
--service-account stringpath to a service-account JSON, or inline JSON content (overrides --account, env, and active Account)
--timeout durationper-request API timeout, e.g. 30s or 2m (default: 60s for control-plane calls, none for uploads)
-v, --verboselog flow steps to stderr (info level)