Publish Android Editor stable releases to open testing track (#130)

This commit is contained in:
Anish Mishra
2025-10-14 04:31:34 +05:30
committed by GitHub
parent f17aad663b
commit 33d44ce966
3 changed files with 45 additions and 18 deletions

View File

@@ -3,30 +3,44 @@ from google.oauth2 import service_account
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 <aab-path> <native-debug-symbols-path> <json-key-path>")
if len(sys.argv) != 5:
print("Usage: python3 upload_playstore.py <aab-path> <native-debug-symbols-path> <json-key-path> <version-name>")
print("version-name format: <major>.<minor>[.<patch>]-<channel> (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)

View File

@@ -1,5 +1,12 @@
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <version-name>"
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"

View File

@@ -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