Google Play and App Store publishing as two Gitea actions

play uploads an Android App Bundle to a track or moves a release between
tracks; apple uploads an iOS build for TestFlight and submits a version for
review. Each is one Python file over the store's own API, with openssl for
the signed tokens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KizzWs2WQPWN2qgE7G6r8B
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-23 12:57:12 +02:00
commit b3c2714862
7 files changed
+848

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
name: Google Play
description: Uploads an Android App Bundle to a Google Play track, or moves a release from one track to another
inputs:
service-account:
description: The JSON key file of the Google Cloud service account invited in Play Console, from a secret
required: true
package:
description: The application id, for example software.arasaka.meweb
required: true
aab:
description: The signed .aab to upload; leave empty when from-track is given
required: false
from-track:
description: Take the newest release on this track instead of uploading, to promote it to track
required: false
track:
description: internal, alpha (closed testing), beta (open testing), production, or a custom closed track
default: internal
status:
description: completed, draft, inProgress (a staged rollout, with fraction) or halted
default: completed
fraction:
description: The share of users a staged rollout reaches, between 0 and 1
required: false
notes:
description: A folder of <language>.txt release notes, such as en-US.txt and it-IT.txt, 500 characters each at most
required: false
name:
description: The release name shown in Play Console; Google uses the version name when empty
required: false
runs:
using: composite
steps:
- shell: bash
run: python3 "$GITHUB_ACTION_PATH/play.py"
env:
PLAY_SERVICE_ACCOUNT: ${{ inputs.service-account }}
PLAY_PACKAGE: ${{ inputs.package }}
PLAY_AAB: ${{ inputs.aab }}
PLAY_FROM_TRACK: ${{ inputs.from-track }}
PLAY_TRACK: ${{ inputs.track }}
PLAY_STATUS: ${{ inputs.status }}
PLAY_FRACTION: ${{ inputs.fraction }}
PLAY_NOTES: ${{ inputs.notes }}
PLAY_NAME: ${{ inputs.name }}