Skip to content

Instantly share code, notes, and snippets.

@mitchhentges
Last active August 2, 2019 00:11
Show Gist options
  • Save mitchhentges/bf38f085d1566cf0373970b01fc0e956 to your computer and use it in GitHub Desktop.
Save mitchhentges/bf38f085d1566cf0373970b01fc0e956 to your computer and use it in GitHub Desktop.
push_apk(...) with target types
# usage from pushapkscript
def pushapkscript_function_types(publish_config):
apks = ['file', 'file2']
expected_package_names = ['org.mozilla.fenix']
if publish_config['target_platform'] == 'google':
target = GooglePlayPush(
publish_config['google_service_account'],
publish_config['google_credentials_file'],
publish_config['google_track'],
publish_config.get('google_rollout')
)
else:
target = AmazonPush(
publish_config['amazon_client_id'],
publish_config['amazon_client_secret'],
)
push_apk_types(
apks,
target,
expected_package_names,
commit=publish_config['commit'],
contact_server=publish_config['contact_server'],
skip_checks_fennec=True,
)
# --------------------------------
# mozapkpublisher
def push_apk_types(
apks,
target: Union[GooglePlayPush, AmazonPush],
expected_package_names,
*,
commit,
contact_server,
skip_check_ordered_version_codes=False,
skip_check_multiple_locales=False,
skip_check_same_locales=False,
skip_checks_fennec=False,
):
# We want to tune down some logs, even when push_apk() isn't called from the command line
main_logging.init()
apks_metadata = extract_and_check_apks_metadata(
apks,
expected_package_names,
skip_checks_fennec,
skip_check_multiple_locales,
skip_check_same_locales,
skip_check_ordered_version_codes,
)
# Each distinct product must be uploaded in different store transaction, so we split them
# by package name here.
apks_by_package_name = _apks_by_package_name(apks_metadata)
for package_name, extracted_apks in apks_by_package_name.items():
target.push(package_name, extracted_apks, contact_server, commit)
@dataclass
class GooglePlayPush:
service_account: str
credentials_file_name: str
track: str
rollout_percentage: Optional[int]
def push(self, package_name, extracted_apks, contact_server, commit):
with GooglePlayEdit.transaction(
self.service_account,
self.credentials_file_name,
package_name,
contact_server,
commit,
) as edit:
edit.update_app(extracted_apks, self.track, self.rollout_percentage)
@dataclass
class AmazonPush:
client_id: str
client_secret: str
def push(self, package_name, extracted_apks, contact_server, commit):
with AmazonStoreEdit.transaction(
self.client_id,
self.client_secret,
package_name,
contact_server,
commit,
) as edit:
edit.update_app(extracted_apks)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment