This action will help you upload an Android .apk
or .aab
(Android App Bundle) file to the Google Play Console using the Google Play Developer API v3.
You must provide one of either serviceAccountJson
or serviceAccountJsonPlainText
The service account json private key file to authorize the upload request
The service account json in plain text, provided via a secret, etc.
Required: The package name, or Application Id, of the app you are uploading
DEPRECATED: Please switch to using releaseFiles
as this will be removed in the future
The Android release file to upload (.apk or .aab)
CAVEAT: Either this or releaseFile
are required
The Android release file(s) to upload (.apk or .aab). Multiple files are separated by ','. Supports glob.
The release name. Not required to be unique. If not set, the name is generated from the APK's versionName. If the release contains multiple APKs, the name is generated from the date.
Required: The track in which you want to assign the uploaded app.
Default: production
Values: alpha
, beta
, internal
, production
, internalsharing
In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority.
Default: 0
Values: [0, 5]
Portion of users who should get the staged version of the app. Accepts values between 0.0 and 1.0 (exclusive-exclusive). Omitting this value will execute a full rollout.
Release status. This can be set to draft
to complete the release at some other time.
Default: inProgress
if userFraction
is specified, otherwise completed
Values: completed
, inProgress
, draft
, halted
The directory of localized whats new files to upload as the release notes. The files contained in the whatsNewDirectory
MUST use the pattern whatsnew-<LOCALE>
where LOCALE
is using the BCP 47
format, e.g.
en-US
- English/Americade-DE
- German/Germanyja-JP
- Japanese/Japan
and contain plain utf8
encoded text with no extension on the file. The resulting directory in your project should look something like this:
projectDir/
└── whatsNewDirectory/
├── whatsnew-en-US
├── whatsnew-de-DE
└── whatsnew-ja-JP
where whatsNewDirectory
is the path you pass to the action.
The mapping.txt file used to de-obfuscate your stack traces from crash reports
A JSON list containing the download urls for every release file uploaded using the track
internalsharing
The environment variable that is set when using the track
internalsharing
The download url for the last release file uploaded using the track
internalsharing
, useful when a single release file is uploaded
The environment variable that is set when using the track
internalsharing
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJson: ${{ SERVICE_ACCOUNT_JSON }}
packageName: com.example.MyApp
releaseFile: ${{ SIGNED_RELEASE_FILE}}
track: production
inAppUpdatePriority: 2
userFraction: 0.33
whatsNewDirectory: distribution/whatsnew
mappingFile: app/build/outputs/mapping/release/mapping.txt
Using glob to get release files
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJson: ${{ SERVICE_ACCOUNT_JSON }}
packageName: com.example.MyApp
releaseFiles: app/build/outputs/bundle/release/*.aab
track: production
inAppUpdatePriority: 2
userFraction: 0.33
whatsNewDirectory: distribution/whatsnew
mappingFile: app/build/outputs/mapping/release/mapping.txt