From 084ba2b7ba03e1671fa133f552cb9ea3d18188ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bot=20of=20Thomas=20G=C3=BCttler?= Date: Thu, 14 May 2026 09:46:59 +0200 Subject: [PATCH] fix: increase Play Store upload timeout and add retries (#40) --- flake.nix | 2 ++ scripts/deploy_playstore.py | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index a9feb0c..e9a9bf5 100644 --- a/flake.nix +++ b/flake.nix @@ -84,6 +84,8 @@ # python3 base + Google Play API client (for scripts/deploy_playstore.py) (python3.withPackages (ps: with ps; [ google-api-python-client + google-auth-httplib2 + httplib2 ])) # used by stalwart-dev/start and deploy_playstore.py fgj # Codeberg/Forgejo CLI (like gh for GitHub) ]); diff --git a/scripts/deploy_playstore.py b/scripts/deploy_playstore.py index 8173f72..0d00f0c 100755 --- a/scripts/deploy_playstore.py +++ b/scripts/deploy_playstore.py @@ -5,6 +5,8 @@ import json import os import sys +import google_auth_httplib2 +import httplib2 from google.oauth2 import service_account from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload @@ -12,6 +14,7 @@ from googleapiclient.http import MediaFileUpload PACKAGE_NAME = "de.sharedinbox.mua" AAB_PATH = "build/app/outputs/bundle/release/app-release.aab" TRACK = "internal" +_TIMEOUT = 300 # seconds — AAB uploads can be large def main(): @@ -29,9 +32,12 @@ def main(): scopes=["https://www.googleapis.com/auth/androidpublisher"], ) - service = build("androidpublisher", "v3", credentials=creds) + authorized_http = google_auth_httplib2.AuthorizedHttp( + creds, http=httplib2.Http(timeout=_TIMEOUT) + ) + service = build("androidpublisher", "v3", http=authorized_http) - edit = service.edits().insert(body={}, packageName=PACKAGE_NAME).execute() + edit = service.edits().insert(body={}, packageName=PACKAGE_NAME).execute(num_retries=3) edit_id = edit["id"] media = MediaFileUpload(AAB_PATH, mimetype="application/octet-stream", resumable=True) @@ -39,7 +45,7 @@ def main(): service.edits() .bundles() .upload(packageName=PACKAGE_NAME, editId=edit_id, media_body=media) - .execute() + .execute(num_retries=3) ) version_code = bundle["versionCode"] print(f"Uploaded AAB, version code: {version_code}") @@ -49,9 +55,9 @@ def main(): editId=edit_id, track=TRACK, body={"releases": [{"versionCodes": [version_code], "status": "completed"}]}, - ).execute() + ).execute(num_retries=3) - service.edits().commit(packageName=PACKAGE_NAME, editId=edit_id).execute() + service.edits().commit(packageName=PACKAGE_NAME, editId=edit_id).execute(num_retries=3) print(f"Deployed version {version_code} to {TRACK} track")