From 5cc241f1f6fdfd9502de116cca744a68218e808b Mon Sep 17 00:00:00 2001 From: Anish Mishra Date: Sat, 11 Oct 2025 00:50:24 +0530 Subject: [PATCH] Publish Android Editor stable releases to open testing track --- build-android/playstore_upload_script.py | 52 ++++++++++++++++-------- build-android/upload-playstore.sh | 9 +++- publish-release.sh | 2 +- 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/build-android/playstore_upload_script.py b/build-android/playstore_upload_script.py index 923eff6..317f583 100644 --- a/build-android/playstore_upload_script.py +++ b/build-android/playstore_upload_script.py @@ -3,30 +3,44 @@ from googleapiclient.discovery import build PACKAGE_NAME = "org.godotengine.editor.v4" -TRACK = "alpha" -RELEASE_NAME = "Automated Release" -RELEASE_NOTES = "Automated closed testing release" -def main(aab_path, nds_path, key_path): +def main(aab_path, nds_path, key_path, version_name): + version_base = version_name.split("-")[0] + version_parts = version_base.split(".") + major = version_parts[0] + minor = version_parts[1] + patch = int(version_parts[2]) if len(version_parts) > 2 else 0 + + release_note = f"Godot Engine {version_name} has arrived!\nNote: This is a pre-release piece of software so be sure to make backups." + track = "alpha" + + if version_name.endswith("stable"): + if patch == 0: + release_url = f"https://godotengine.org/releases/{major}.{minor}/" + else: + release_url = f"https://godotengine.org/article/maintenance-release-godot-{major}-{minor}-{patch}/" + release_note = f"Godot Engine {version_name} has arrived!\nRelease page: {release_url}" + track = "beta" + scopes = ["https://www.googleapis.com/auth/androidpublisher"] credentials = service_account.Credentials.from_service_account_file(key_path, scopes=scopes) + initial_timeout = socket.getdefaulttimeout() socket.setdefaulttimeout(900) service = build("androidpublisher", "v3", credentials=credentials) print("Creating a new edit") - edit_request = service.edits().insert(body={}, packageName=PACKAGE_NAME) - edit = edit_request.execute() + edit = service.edits().insert(body={}, packageName=PACKAGE_NAME).execute() edit_id = edit["id"] print(f"Uploading {aab_path}") - upload_request = service.edits().bundles().upload( + bundle_response = service.edits().bundles().upload( editId=edit_id, packageName=PACKAGE_NAME, media_body=aab_path, media_mime_type="application/octet-stream" - ) - bundle_response = upload_request.execute() + ).execute() + version_code = bundle_response["versionCode"] print(f"Uploaded AAB with versionCode: {version_code}") @@ -40,19 +54,21 @@ def main(aab_path, nds_path, key_path): media_mime_type="application/octet-stream" ).execute() - print(f"Assigning version {version_code} to {TRACK} track") + release_name = f"v{version_name} ({version_code})" + print(f"Assigning {release_name} to {track} track") + service.edits().tracks().update( editId=edit_id, packageName=PACKAGE_NAME, - track=TRACK, + track=track, body={ "releases": [{ - "name": f"{RELEASE_NAME} v{version_code}", + "name": release_name, "versionCodes": [str(version_code)], "status": "completed", "releaseNotes": [{ "language": "en-US", - "text": RELEASE_NOTES + "text": release_note }] }] } @@ -63,10 +79,14 @@ def main(aab_path, nds_path, key_path): socket.setdefaulttimeout(initial_timeout) if __name__ == "__main__": - if len(sys.argv) != 4: - print("Usage: python3 upload_playstore.py ") + if len(sys.argv) != 5: + print("Usage: python3 upload_playstore.py ") + print("version-name format: .[.]- (e.g. 4.4.1-stable, 4.5-stable, 4.6-dev1)") sys.exit(1) + aab_path = sys.argv[1] nds_path = sys.argv[2] key_path = sys.argv[3] - main(aab_path, nds_path, key_path) + version_name = sys.argv[4] + + main(aab_path, nds_path, key_path, version_name) diff --git a/build-android/upload-playstore.sh b/build-android/upload-playstore.sh index 0d2f40d..525ff41 100755 --- a/build-android/upload-playstore.sh +++ b/build-android/upload-playstore.sh @@ -1,5 +1,12 @@ #!/bin/bash +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +VERSION_NAME="$1" + BASEDIR="$(pwd)" source ${BASEDIR}/config.sh @@ -18,4 +25,4 @@ source "$VENV_DIR/bin/activate" echo "Installing google-api-python-client" pip install --upgrade google-api-python-client -python3 "$PYTHON_SCRIPT" "$AAB_FILE" "$NDS_FILE" "$JSON_KEY_FILE" +python3 "$PYTHON_SCRIPT" "$AAB_FILE" "$NDS_FILE" "$JSON_KEY_FILE" "$VERSION_NAME" diff --git a/publish-release.sh b/publish-release.sh index 2a5198a..cee6c32 100755 --- a/publish-release.sh +++ b/publish-release.sh @@ -180,7 +180,7 @@ fi if [ -d "deps/playstore_key.json" ]; then echo "Publishing Android Editor to PlayStore..." - sh build-android/upload-playstore.sh + sh build-android/upload-playstore.sh ${godot_version} else echo "Disabling Android Editor publishing as deps/playstore_key.json doesn't exist." fi