def android_multiarch_release(): module_build_tasks = build_gradle_modules_tasks(True) version = appservices_version() worker_type = os.environ['BEETMOVER_WORKER_TYPE'] bucket_name = os.environ['BEETMOVER_BUCKET'] bucket_public_url = os.environ['BEETMOVER_BUCKET_PUBLIC_URL'] for module_info in module_definitions(): module = module_info['name'] build_task = module_build_tasks[module] for artifact in module_info['artifacts']: artifact_name = artifact['name'] artifact_path = artifact['path'] (BeetmoverTask("Publish Android module: {} via beetmover".format( artifact_name)).with_description( "Publish release module {} to {}".format( artifact_name, bucket_public_url)).with_worker_type(worker_type) # We want to make sure ALL builds succeeded before doing a release. .with_dependencies(*module_build_tasks.values( )).with_upstream_artifact({ "paths": [artifact_path], "taskId": build_task, "taskType": "build", "zipExtract": True, }).with_app_name("appservices").with_artifact_id(artifact_name). with_app_version(version).with_scopes( "project:mozilla:application-services:releng:beetmover:bucket:{}" .format(bucket_name), "project:mozilla:application-services:releng:beetmover:action:push-to-maven" ).create())
def build_gradle_modules_tasks(deploy_environment): libs_tasks = libs_for(deploy_environment, "android", "desktop_linux", "desktop_macos", "desktop_win32_x86_64") module_build_tasks = {} for module_info in module_definitions(): module_build_tasks[module_info['name']] = gradle_module_task( libs_tasks, module_info, deploy_environment) return module_build_tasks
def build_gradle_modules_tasks(is_release): libs_tasks = libs_for("android", "desktop_linux", "desktop_macos", "desktop_win32_x86_64") module_build_tasks = {} for module_info in module_definitions(): module_build_tasks[module_info['name']] = gradle_module_task( libs_tasks, module_info, is_release) return module_build_tasks
def android_linux_x86_64(): ktlint_detekt() libs_tasks = libs_for(DeployEnvironment.NONE, "android", "desktop_linux", "desktop_macos", "desktop_win32_x86_64") task = (android_task("Build and test (Android - linux-x86-64)", libs_tasks).with_script(""" echo "rust.targets=linux-x86-64,x86_64\n" > local.properties """).with_script(""" yes | sdkmanager --update yes | sdkmanager --licenses ./gradlew --no-daemon clean ./gradlew --no-daemon assembleDebug ./gradlew --no-daemon testDebug """)) for module_info in module_definitions(): module = module_info['name'] if module.endswith("-megazord"): task.with_script("./automation/check_megazord.sh {}".format( module[0:-9].replace("-", "_"))) return task.create()
def android_multiarch_release(is_staging): module_build_tasks = build_gradle_modules_tasks( DeployEnvironment.STAGING_RELEASE if is_staging else DeployEnvironment. RELEASE) version = appservices_version() bucket_name = os.environ['BEETMOVER_BUCKET'] bucket_public_url = os.environ['BEETMOVER_BUCKET_PUBLIC_URL'] for module_info in module_definitions(): module = module_info['name'] build_task = module_build_tasks[module] sign_task = ( SignTask("Sign Android module: {}".format(module)). with_description("Signs module").with_worker_type( "appsv-signing-dep-v1" if is_staging else "appsv-signing-v1") # We want to make sure ALL builds succeeded before doing a release. .with_dependencies(*module_build_tasks.values( )).with_upstream_artifact({ "paths": [ artifact["taskcluster_path"] for publication in module_info["publications"] for artifact in publication.to_artifacts(('', )) ], "formats": ["autograph_gpg"], "taskId": build_task, "taskType": "build" }).with_scopes( "project:mozilla:application-services:releng:signing:cert:{}-signing" .format("dep" if is_staging else "release")).create()) (BeetmoverTask("Publish Android module: {} via beetmover".format( module)).with_description("Publish release module {} to {}".format( module, bucket_public_url)).with_worker_type( os.environ['BEETMOVER_WORKER_TYPE']). with_dependencies(sign_task).with_upstream_artifact({ "paths": [ artifact['taskcluster_path'] for publication in module_info["publications"] for artifact in publication.to_artifacts(('', '.sha1', '.md5')) ], "taskId": build_task, "taskType": "build", }).with_upstream_artifact({ "paths": [ artifact['taskcluster_path'] for publication in module_info["publications"] for artifact in publication.to_artifacts(('.asc', )) ], "taskId": sign_task, "taskType": "signing", }).with_app_name("appservices").with_artifact_map([ { "locale": "en-US", "taskId": build_task, "paths": { artifact["taskcluster_path"]: { "checksums_path": "", # TODO beetmover marks this as required, but it's not needed "destinations": [artifact["maven_destination"]], } for publication in module_info["publications"] for artifact in publication.to_artifacts(('', '.sha1', '.md5')) } }, { "locale": "en-US", "taskId": sign_task, "paths": { artifact["taskcluster_path"]: { "checksums_path": "", # TODO beetmover marks this as required, but it's not needed "destinations": [artifact["maven_destination"]], } for publication in module_info["publications"] for artifact in publication.to_artifacts(('.asc', )) }, } ]).with_app_version(version).with_scopes( "project:mozilla:application-services:releng:beetmover:bucket:{}". format(bucket_name), "project:mozilla:application-services:releng:beetmover:action:push-to-maven" ).with_routes( "[email protected]").create())
def build_gradle_modules_tasks(deploy_environment): libs_tasks = libs_for(deploy_environment, "android") module_build_tasks = {} for module_info in module_definitions(): module_build_tasks[module_info['name']] = gradle_module_task(libs_tasks, module_info, deploy_environment) return module_build_tasks